在我的UserControl中我有三個組合框,在啓用保存按鈕前必須選擇所有組合框。我定義了一個MultiDataTrigger綁定到我的ViewModel屬性,它們最初設置爲null。因此,當控件加載時,按鈕被禁用,但一旦選擇了其中一個組合框,該按鈕將被啓用。根據我的理解,MultiDataTrigger的所有條件必須滿足才能啓動?如果只有一個條件得到滿足,MultiDataTrigger會觸發
這裏是我的按鈕樣式:
<Style x:Key="saveButton" TargetType="{x:Type Button}">
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Path=CurrentSpeech.Room, Converter={StaticResource nullToBoolConverter}}" Value="true" />
<Condition Binding="{Binding Path=CurrentSpeech.Speaker, Converter={StaticResource nullToBoolConverter}}" Value="true" />
<Condition Binding="{Binding Path=CurrentSpeech.Track, Converter={StaticResource nullToBoolConverter}}" Value="true" />
</MultiDataTrigger.Conditions>
<Setter Property="Button.IsEnabled" Value="False" />
</MultiDataTrigger>
</Style.Triggers>
</Style>
我的組合框:
<ComboBox Margin="3" Grid.Row="4" Grid.Column="1" ItemsSource="{Binding Path=Rooms, Mode=OneWay}"
SelectedItem="{Binding Path=CurrentSpeech.Room, Mode=TwoWay}" DisplayMemberPath="Name"/>
<ComboBox Margin="3" Grid.Row="5" Grid.Column="1" ItemsSource="{Binding Path=Tracks, Mode=OneWay}"
SelectedItem="{Binding Path=CurrentSpeech.Track, Mode=TwoWay}" DisplayMemberPath="Title"/>
<ComboBox Margin="3" Grid.Row="6" Grid.Column="1" ItemsSource="{Binding Path=Speakers, Mode=OneWay}"
SelectedItem="{Binding Path=CurrentSpeech.Speaker, Mode=TwoWay}" DisplayMemberPath="Name"/>
我的按鈕:
<Button Style="{StaticResource saveButton}" Margin="3" Grid.Row="9" Grid.Column="1" Command="{Binding Path=CurrentSpeech.SaveCommand}" Width="150" HorizontalAlignment="Right" Content="Speichern"/>
我的轉換器:
[ValueConversion(typeof(object), typeof(bool))]
public class NullToBoolConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
bool result = value == null ? true : false;
if (parameter != null)
return !result;
return result;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return value;
}
}
謝謝, Paxx
你試過調試嗎?你有沒有檢查你的轉換器中的值是否真的是空的? – Blachshma
嗨Blachshma,我剛剛檢查。當窗口加載時,轉換器在所有3個條件下都返回true。如果我選擇其中一個,轉換器將返回錯誤。所以看起來轉換器工作正常。 – Paxx
哦,這不是問題。它仍然無法正常工作,只有轉換器是。只要滿足其中一個條件,按鈕將被啓用,這不是我想要的。 – Paxx