[英]WPF | Multibinding not working
我试图使用多重绑定,因为我有两个文本框来验证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/
因此,如果我必须创建新文件,我将如何引用该文件到新文件。再次抱歉,我是WPF和.NET的新手。
=-=-=-=-=-=-=-=-=
是否按照答案中的描述进行了更改,但收到了新的错误。
=-=-=-=-=-=-=-
更新2:
试过这样..
转换器类可以位于所需的任何文件夹/文件中,转换器的名称空间很重要。 但是,将转换器-以及该数学器的任何类-放在与它们包含的类相同的单独文件中是一个好习惯。 并将转换器类放在单独的“转换器”文件夹中。 关于如何引用它,您需要在xaml文件中要使用它的位置声明转换器的名称空间:
<Window
....
xmlns:converters="clr-namespace:YourProject.ConvertersNamespace"
....
>
然后,您可以在资源中引用转换器类:
<converters:IsEnabledConverter x:Key="IsEnabledConverter" />
然后按照您所描述的在多绑定中使用转换器。 在多重绑定中,您到tbFatherName元素名称的绑定完全相同,但是我想那只是一个错字。
Content =“确认” Grid.Column =“ 1” HorizontalAlignment =“ Left” Margin =“ 10,160,0,0”
Grid.Row =“ 1” VerticalAlignment =“ Top”高度=“ 27” Width =“ 80”>
<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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.