
前台代码如下:
<StackPanel>
<DataGrid AutoGenerateColumns="False" Height="200" Name="dataGrid1" Width="200" CanUserAddRows="False">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Header">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Button x:Name="mybutton" Tag="MyButton" Height="22" Width="50" Content="{Binding Id}"/>
<TextBlock Margin="10 0 0 0" Text="{Binding Name}"/>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
<Button HorizontalAlignment="Center" Margin="10" Click="Button_Click">Search</Button>
<TextBlock x:Name="txt_result"/>
</StackPanel>
我放了一个只有一列模板列的datagrid,一个按钮,一个文本
后台给datagrid绑上数据源
dataGrid1.ItemsSource = new List<People>
{
new People(){Id = 1,Name = "aaa"},
new People(){Id = 2,Name = "bbb"},
new People(){Id = 3,Name = "ccc"}
}
然后就是通过按钮事件来处理模板列中内容
1.使用VisualTreeHelper
2.使用FindName
private void Button_Click(object sender, RoutedEventArgs e)
{
DataGridTemplateColumn tempColumn = dataGrid1.Columns[0] as DataGridTemplateColumn
DataTemplate dtemp = tempColumn.CellTemplate
//Button btn = (Button)VisualTreeHelper.GetChild(dtemp.LoadContent(),0)//第一种方法
StackPanel sp = (StackPanel)dtemp.LoadContent() Button btn = sp.FindName("mybutton") as Button//第二种方法
txt_result.Text = btn.Tag.ToString() }
其实解决起来也不难。在mainwindow后台添加usercontrol1 button的click事件。里面的逻辑设置usercontrol1.visibility = visibility.Collapseusercontrol2.visibility= visibility.visible。欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)