2

行の値 = "支払いなし" の場合、データ テンプレートに ComboBox を表示する必要があります。それ以外の場合は、行にコンボ ボックスを表示しません。

ここに私のデータグリッドテンプレートがあります:

<DataGridTemplateColumn Header="Time">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBlock VerticalAlignment="Center" Text="{Binding date_payment, Converter={StaticResource ByteArrayConverter}}" Width="135" />
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
    <DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate>
            <ComboBox IsReadOnly="False" SelectionChanged="ComboBox_SelectionChanged_1" Style="{DynamicResource ComboBoxStyle}" Height="Auto" ItemsSource="{Binding}" Width="135">
                <ComboBox.BorderBrush>
                    <SolidColorBrush Color="{DynamicResource Color1}"/>
                </ComboBox.BorderBrush>
                <ComboBox.Items>
                    <ComboBoxItem>Payment</ComboBoxItem>
                </ComboBox.Items>
            </ComboBox>
        </DataTemplate>
    </DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>

event を使用する必要があると思いLoadinRowますが、コンボボックスを設定するとName(コードで)表示されませんか?

助けてください!ありがとうございました :)


答え:

<Setter Property="Visibility" Value="Hidden"/>
  <Style.Triggers>
    <DataTrigger Binding="{Binding date_payment, Converter={StaticResource ByteArrayConverter}}" Value="Не оплачено">
  <Setter Property="Visibility" Value="Visible" />
 </DataTrigger>
...
4

1 に答える 1

2

イベントに登録する必要はありません。宣言DataTrigger内にa を作成するだけです。ComboBox

 <ComboBox>
         <ComboBox.Triggers>
            <DataTrigger Binding="{Binding [Name of your property]}" Value="No payment">
               <Setter Property="Visibility" Value="Collapsed"/>
            </DataTrigger>
         </ComboBox.Triggers>
      </ComboBox>

別の (おそらくより良い) アプローチは、顧客の現在の状態 (NoPayment など) を示すブール値を使用してバインドするオブジェクトにプロパティを実装することです。Visibility次に、この状態をターゲット値に変換する Converter を使用して、この値を ComboBoxes プロパティにバインドできVisibilityます。

于 2012-07-19T08:53:45.437 に答える