2

私のアプリケーションでは、が含まれています。チェックされている場合は1つを表示し、チェックされていない場合は別の1つをCheckBox表示したいと思います。DataTemplate

これが2つのテンプレートのスニペットです

    <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 に答える