总是得到DependencyProperty.unsetvalue



所以我在wpf中测试多绑定,我有三个文本框,应该得到年,月,日,我的转换器类应该返回这些输入的日期,非常简单。

但是在我的转换方法中,values[0]总是未设置,即我总是得到Dependencyproperty.UnsetValue,即使我给它一个初始值。

XAML

<Window x:Class="WpfApplication2.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:s="clr-namespace:System;assembly=mscorlib"
    xmlns:src="clr-namespace:WpfApplication2"
    Title="MultiBinding Demo" Width="200" Height="200">
<Window.Resources>
    <src:DateConverter x:Key="myConverter" />
</Window.Resources>
<StackPanel Orientation="Horizontal">
    <StackPanel.Resources>
    </StackPanel.Resources>
    <TextBox Name="tb1" Margin="10"  Width="Auto" Height="20"></TextBox>
    <TextBox Name="tb2" Margin="10" Width="20" Height="20" ></TextBox>
    <TextBox Name="tb3" Width="20" Height="20" ></TextBox>
    <Label Name="Date" Width="50" Height="25" Margin="5" >
        <Label.Content>
            <MultiBinding Converter="{StaticResource myConverter}" Mode="OneWay">
                <Binding ElementName="tbl" Path="Text" />
                <Binding ElementName="tb2" Path="Text" />
                <Binding ElementName="tb3" Path="Text" />
            </MultiBinding>
        </Label.Content>
    </Label>
</StackPanel>

DATECONVERTER类

    class DateConverter : IMultiValueConverter
{
    public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (values[0] == DependencyProperty.UnsetValue || values[1] == DependencyProperty.UnsetValue || values[2] == DependencyProperty.UnsetValue)
        {
           return "";
        }
        else
        {
            int year = (int)values[0];
            int month = (int)values[1];
            int day = (int)values[2];
            DateTime date = new DateTime(year, month, day);
            return date.ToShortDateString();
        }
    }
    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

我正在看你的XAML,它看起来像你的第一个TextBox被命名为tb1(数字1),但在绑定中你引用元素名称tbl(字母L)。

相关内容

  • 没有找到相关文章

最新更新