2017-02-26 6 views
-2

下記のコードに問題があります。 ivalueconverter(LengthConverter)が最初のパラメータ "Binding Path = Length"がこの場合ConverterParameter 3よりも小さいと判断した場合、データトリガで何をしようとしていますか?ElementStyle DataTrigger

これが真である行については、空白のテキストが表示されます。それ以外の場合は私のデータを取得します。

Binding = "{Binding Data1}"の下の1行目が省略された場合、データトリガーは正常に機能しますが、セル値を編集してData1のセッターをトリガーすることはできませんデータを更新します。以下のようなものがあれば、データを編集することはできますが、トリガーは機能しなくなります。

データ入力とデータトリガーの両方を動作させる方法はありますか?

<DataGridTextColumn Header="MyData1" Binding="{Binding Data1}"> 
<DataGridTextColumn.ElementStyle> 
     <Style TargetType="{x:Type TextBlock}"> 
     <Setter Property="Text" Value="{Binding Data1, Mode=TwoWay}"/> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding Path=Length, Converter={StaticResource LengthConverter}, ConverterParameter=3}" Value="True"> 
       <Setter Property="Text" Value="{x:Null}"/> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 
</DataGridTextColumn.ElementStyle> 

ありがとうございます!

答えて

0

私はこのようなカスタムCellTemplateCellEditingTemplateDataGridTemplateColumnを使用することをお勧めします。getません

LengthConverter : IValueConverter { 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return ((value as string)?.Length??0) > 3; 
    } 
} 

Lengthプロパティ自体:

<DataGridTemplateColumn Header="MyData1"> 
    <DataGridTemplateColumn.CellEditingTemplate> 
     <DataTemplate> 
      <TextBox Text="{Binding Path=Data1, Mode=TwoWay, UpdateSourceTrigger=LostFocus}" /> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellEditingTemplate> 
    <DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <TextBlock > 
       <TextBlock.Style> 
        <Style TargetType="TextBlock"> 
         <Setter Property="Text" Value="{Binding Path=Data1}" /> 
         <Style.Triggers> 
          <DataTrigger Binding="{Binding Path=Data1, Converter={StaticResource LengthConverter}, ConverterParameter=3}" Value="True"> 
           <Setter Property="Text" Value="{x:Null}" /> 
          </DataTrigger> 
         </Style.Triggers> 
        </Style> 
       </TextBlock.Style> 
      </TextBlock> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellTemplate> 
</DataGridTemplateColumn> 

あなたConverterは今Data1.Lengthを指す必要がありますテキストの変更時にPropertyChangedイベント。したがって、文字列Data1に直接バインドする...

関連する問題