C# 如何在运行时更改数据模板?
在我的应用程序中,我有一个C# 如何在运行时更改数据模板?,c#,wpf,xaml,datagrid,datatemplate,C#,Wpf,Xaml,Datagrid,Datatemplate,在我的应用程序中,我有一个复选框,我希望当它被选中时,显示一个DataTemplate,当它被取消选中时,显示另一个 下面是包含两个模板的代码段 <DataGrid x:Name="dataGrid" LoadingRow="dataGrid_LoadingRow_1" ItemsSource="{Binding Item3}" <DataGrid.RowHeaderTemplate> <DataTemplate>
复选框
,我希望当它被选中时,显示一个DataTemplate
,当它被取消选中时,显示另一个
下面是包含两个模板的代码段
<DataGrid x:Name="dataGrid" LoadingRow="dataGrid_LoadingRow_1" ItemsSource="{Binding Item3}"
<DataGrid.RowHeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding StudentId}"/>
</DataTemplate>
<DataTemplate>
<TextBlock Text="{Binding FullName}"/>
</DataTemplate>
</DataGrid.RowHeaderTemplate>
</DataGrid>
您只能通过触发器来完成。如果以上是你的要求。您只需通过触发器即可完成。我试过了,它对我有效
<Window.Resources>
<ControlTemplate x:Key="MyRowHeaderTemplate">
<TextBlock x:Name="RowHeaderTxt"
Text="{Binding StudentId, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"/>
<ControlTemplate.Triggers>
<DataTrigger Binding="{Binding Path=IsChecked, ElementName=MyCheckBox}"
Value="True">
<Setter TargetName="RowHeaderTxt" Property="Text"
Value="{Binding FullName, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"/>
</DataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Window.Resources>
<StackPanel>
<CheckBox x:Name="MyCheckBox"/>
<DataGrid ItemsSource="{Binding Item3}" AutoGenerateColumns="True">
<DataGrid.RowHeaderTemplate>
<DataTemplate>
<ContentControl Template="{StaticResource MyRowHeaderTemplate}"/>
</DataTemplate>
</DataGrid.RowHeaderTemplate>
</DataGrid>
</StackPanel>
试试这个。LookupDataTemplateSelector
,我认为它应该很好地满足您的需要。好的,这不是我真正的怀疑,我的意思是,当复选框状态更改时,我希望它可以隐藏,启动数据模板Selector或查看。好的,一个选项是创建一个从ContentControl
派生的类,比如说有三个依赖属性:两个类型为DataTemplate
,用于模板,一个类型为bool
,用于绑定到CheckBox.IsChecked
。然后,此控件可以根据Boolean
-属性的值设置适当的模板,并在更改依赖项属性时更新模板。然后将该类的一个瞬间放入RowHeaderTemplate
的DataTemplate
,并添加适当的绑定。