2013-04-01 43 views
0

我有一個具有多個字段的窗體。我還有一個「驗證」按鈕,可以執行數據庫輸入。我希望按鈕僅在用戶定義的最小字段爲時才被激活。Complex MultiBinding驗證

到目前爲止,這是因爲所有的領域相當簡單了文字:

<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> 

你知道我該怎麼做嗎?

謝謝!

回答

2

轉換器是工作的錯誤工具。您應該查看驗證,命令和查看模型。您的視圖模型將實現驗證邏輯並公開您的按鈕綁定的命令。該命令只有在您的驗證邏輯通過時纔可執行。

+0

謝謝Kent。我已經將該按鈕綁定到一個命令。將看看驗證部分。你有什麼鏈接建議我應該看看? – goul