複数のフィールドを持つフォームがあります。DB入力を実行する「検証」ボタンもあります。最小限のフィールドがユーザーによって定義されている場合にのみ、そのボタンをアクティブにしたいと思います。
これまでのところ、すべてのフィールドがテキストだったので非常に単純でした:
<Button x:Name="Manage" Content="Manage">
<Button.IsEnabled>
<MultiBinding Mode="OneWay" Converter="{StaticResource FieldsFilledinToVisible}">
<Binding ElementName="name1" Path="Text"/>
<Binding ElementName="name2" Path="Text"/>
</MultiBinding>
</Button.IsEnabled>
</Button>
コンバーターは次のとおりです。
public class AllValuesDefinedConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
bool isEnabled = false;
for (int i = 0; i < values.Length; i++)
{
isEnabled = isEnabled || string.IsNullOrEmpty(values[i].ToString());
}
return !isEnabled;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
return null;
}
}
ただし、追加のチェック ボックスを検討する必要があります。ここで、条件は[これらのチェックボックスのいずれかがチェックされている + 以前のテキスト フィールドが定義されています --> 検証ボタンを有効にする] である必要があります。
<WrapPanel Style="{StaticResource WrapStyle_Inputs}">
<CheckBox Content="Check1" IsChecked="{Binding Checked1, Mode=TwoWay}"/>
<CheckBox Content="Check2" IsChecked="{Binding Checked2, Mode=TwoWay}"/>
<CheckBox Content="Check3" IsChecked="{Binding Checked3, Mode=TwoWay}"/>
</WrapPanel>
どうすればそうできるか知っていますか?
ありがとう!