我爲我的Expander
控件創建了一種樣式,如果它的值爲false,但它根本不起作用,應該禁用該擴展器。無論IsCheckedIn是真還是假,我的擴展器始終處於啓用狀態。不能禁用帶有樣式的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>
而且這裏是我把我的擴展的風格在我的DataGrid:
<Expander Expanded="Expander_Expanded" Collapsed="Expander_Expanded" Style="{DynamicResource CollapseIsCheckedInExpander}"/>
我有一個屬性代碼隱藏這就是所謂的「IsCheckedIn」我和值設置爲真或false根據我檢查的卡車是否已經簽入或不籤。
有什麼我失蹤了嗎?
編輯:
這裏是我的類:
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));
}
}
,這裏是一個剪斷,我定義我IsCheckedIn:
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 TE。出於某種原因,它沒有拿起我的綁定,但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'並且alwas檢查您的'DataContext'設置是否正確 –