我尝试使用多重绑定,因为我有两个文本框来验证Text.Length
。
这是我的代码。
<StackPanel HorizontalAlignment="Left" Height="28" Margin="107,238,0,0" VerticalAlignment="Top" Width="104" Orientation="Horizontal" Grid.Column="1">
<Button x:Name="btnAddBenefeciary" Content="Add Beneficiary" HorizontalAlignment="Left" VerticalAlignment="Top" Width="99" RenderTransformOrigin="0.587,0.65" Height="28" Click="btnAddBenefeciary_Click">
<Button.IsEnabled>
<MultiBinding Converter="{StaticResource IsEnabledConverter}">
<Binding ElementName="tbFatherName" Path="Text.Length"/>
<Binding ElementName="tbFatherName" Path="Text.Length" />
</MultiBinding>
</Button.IsEnabled>
</Button>
</StackPanel>
在同一档案中,我在<Window.Resources>
<local:IsEnabledConverter x:Key="IsEnabledConverter" />
但我不知道在哪里放这段代码所以我确实放入了自己的xaml.cs文件,这个窗口属于该文件。
public class IsEnabledConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
foreach (var isValid in values)
if (isValid as bool? == false)
return false;
return true;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
我是否需要创建另一个文件,或者在同一个文件中使用这段代码是没关系的,因为在创建新文件的描述中没有人说过任何内容。
我试着遵循这些指南。
http://developingfor.net/2009/01/21/multibinding-in-wpf/
Making a Button IsEnabled state depend on two textboxes
因此,如果我必须创建新文件,我将如何将其引用到新文件中...很抱歉,因为我是WPF和.NET的新手。
= - = - = - = - = - = - = - = - =
按照回答中的说明进行了更改,但收到了新的错误..
= - = - = - = - = - = - = -
更新2:
试过这样......
答案 0 :(得分:0)
转换器类可以位于您想要的任何文件夹/文件中,转换器的命名空间很重要。 但是将转换器(以及任何类别的转换器)放在单独的文件中与其包含的类相同,这是一个好习惯。并将转换器类放在一个单独的转换器&#34;夹。 至于如何引用它,您需要在xaml文件中声明转换器的命名空间:
<Window
....
xmlns:converters="clr-namespace:YourProject.ConvertersNamespace"
....
>
然后您可以在资源中引用转换器类:
<converters:IsEnabledConverter x:Key="IsEnabledConverter" />
然后如您所述,在多重绑定中使用转换器。你有多个绑定两个相同的绑定到tbFatherName元素名称,但我想这只是一个错字。
答案 1 :(得分:0)
Content =“Confirm”Grid.Column =“1”HorizontalAlignment =“Left”Margin =“10,160,0,0”
Grid.Row =“1”VerticalAlignment =“Top”Height =“27”Width =“80”&gt;
<Button.CommandParameter>
<MultiBinding Converter="{StaticResource CustomMultiValueConverterKey}">
<Binding ElementName="cboCountry" Path="SelectedValue"/>
<Binding ElementName="cboShopKeeperID" Path="SelectedValue"/>
</MultiBinding>
</Button.CommandParameter>
</Button>
后面必须写
CommonControlHandlers.populateControls(“CALL GetCountryList()”,cboCountry);
CommonControlHandlers.populateControls<ComboBox>("CALL GetShopKeeperList()", cboShopKeeperID);