2

在我的应用程序中,我有一个CheckBox,我想在选中时显示一个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>

我不知道如何实现它,但我认为我需要INotifyPropertyChanged我的用户控件中的接口来触发或者只是确定什么时候发生了变化。

4

1 回答 1

0

你只能通过触发器来做到这一点。如果以上是你的要求。您可以通过触发器简单地做到这一点。我试过了,它对我有用。

   <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>

尝试这个。

于 2013-01-21T02:29:26.760 回答