Expander
コントロールのスタイルを作成しました。値がfalseの場合、エキスパンダーを無効にするはずですが、全く機能しません。 IsCheckedInがtrueまたはfalseであっても、エキスパンダーは常に有効です。スタイルでWPFエキスパンダーを無効にできません
<Style x:Key="CollapseIsCheckedInExpander" TargetType="{x:Type Expander}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsCheckedIn}" Value="False">
<Setter Property="IsEnabled" Value="False"/>
</DataTrigger>
</Style.Triggers>
</Style>
そして、ここで私は自分のデータグリッドで私のパンダのスタイルを設定する場所です:
<Expander Expanded="Expander_Expanded" Collapsed="Expander_Expanded" Style="{DynamicResource CollapseIsCheckedInExpander}"/>
私は「IsCheckedIn」プロパティコードビハインドことと呼ばれるていると私は真に値を設定しまたは偽に基づいて、私がチェックインしているトラックが既にチェックインされているかどうかに基づいています。
紛失しているものがありますか?私は私のIsCheckedInを定義し切り取ら
public class TruckItems : INotifyPropertyChanged
{
bool _isCheckedIn;
public bool IsCheckedIn
{
get { return _isCheckedIn; }
set
{
if (_isCheckedIn != value)
_isCheckedIn = value;
OnPropertyChanged("IsCheckedIn");
}
}
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
そして、ここでされています:
編集:ここでは
が私のクラスである
truckItem.TruckCurrentPhase = item.CurrentPhase; //Current value is "Not Started", so the IsCheckedIn value should be false in the code below
truckItem.IsCheckedIn = truckItem.TruckCurrentPhase == "Checked In" ? true : false;
SOLUTION
私がことがわかりました私の問題は、RowHeaderTemplaを使用していたテ。何らかの理由で
これは動作しません...それは私のバインディングをピックアップしなかったが、DataGridTemplateColumnはなかった:
<DataGrid.RowHeaderTemplate>
<DataTemplate>
<Expander Expanded="Expander_Expanded" Collapsed="Expander_Expanded" Style="{StaticResource CollapseIsCheckedInExpander}"/>
</DataTemplate>
</DataGrid.RowHeaderTemplate>
これがない作品:私は簡単な例を構築
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Expander Expanded="Expander_Expanded" Collapsed="Expander_Expanded" Style="{StaticResource CollapseIsCheckedInExpander}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
なぜあなたは 'パンダに直接ではないIsCheckedIn'bindingを使用していません?! –
@Motivated私は試しました: ' 'それでも、常に有効です。 –
CareTaker22
をFabianとして使用することをお勧めします 'INotifyPropertyChanged'とあなたの' DataContext'が正しく設定されているかどうかを確認してください –