代码之家  ›  专栏  ›  技术社区  ›  Dean Movy

WPF:将我的文本框与我的属性一起传递到我的转换器中

  •  1
  • Dean Movy  · 技术社区  · 6 年前

    所以我有这个 Converter :

    public class ComboboxSelectedIndexToTextBoxBackgroundColor : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            int selectedIndex = (int)value;
            if (selectedIndex == 0)
                return "Red";
            else
                return "Green";
        }
    
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
    

    我的绑定对象具有此属性(实现 INotifyPropertyChanged ):

    public int ComboboxSelectedIndex
    {
        get { return _comboboxSelectedIndex; }
        set
        {
            _comboboxSelectedIndex = value;
            OnPropertyChanged();
        }
    }
    

    我的 TextBox :

    <TextBox Controls:TextBoxHelper.ClearTextButton="False"
             Background="{Binding ComboboxSelectedIndex, Converter={StaticResource ComboboxSelectedIndexToTextBoxBackgroundColor}}"
             Margin="0,0,0,0">
    

    所以如果我想使用 MultiBindingConverter 沿着我的 ComboboxSelectedIndex 我希望slao将我的 文本框 -有可能吗? 我该怎么做?

    1 回复  |  直到 6 年前
        1
  •  0
  •   ASh aminescm    6 年前

    添加 Name="txt" 属性,并在绑定中使用ElementName。TextBox将成为绑定的源,如果没有属性路径,它将被发送到转换器本身,而不是属性值。

    <MultiBinding Converter="{StaticResource MvCvt}" Mode="OneWay">
        <Binding Path="ComboboxSelectedIndex"/>
        <Binding ElementName="txt"/>
    </MultiBinding>
    

    元素还可以使用 {RelativeSource Self}

    <MultiBinding Converter="{StaticResource MvCvt}" Mode="OneWay">
        <Binding Path="ComboboxSelectedIndex"/>
        <Binding RelativeSource="{RelativeSource Self}"/>
    </MultiBinding>
    

    “McCvt”是一个 IMultiValueConverter 此处实施