2016-11-23 62 views
0

在WPF中我使用了一個MultiBinding這看起來是這樣的:供應的綁定MultiBinding,而不會觸發更新

<DataTrigger Value="True"> 
    <DataTrigger.Binding > 
     <MultiBinding Converter="{StaticResource MyConverter}"> 
      <Binding Path="A" /> 
      <Binding Path="B" /> 
     </MultiBinding> 
    </DataTrigger.Binding> 
    <Setter Property="BorderBrush" Value="Red" /> 
</DataTrigger> 

這是一個稍微哈克方法,雖然,因爲我需要A傳遞到MyConverter我不想更新它(NotifyPropertyChanged)以觸發DataTrigger/MyConverter,因爲它是不必要的(我仍然需要B來觸發更新)。

是否有任何解決方案或完全不同的方法?

+1

你嘗試過'OneTime'模式嗎? '' – ASh

+0

如果將A作爲轉換器參數(因此使用常規轉換器進行常規綁定)會怎麼樣? – Evk

+0

@Evk好主意,但不幸的是'ConverterParameter'不支持綁定。 – maxp

回答

1

您可以創建一個轉換器的依賴屬性值答:

public class MyConverter : DependencyObject, IValueConverter 
{ 
    private static readonly DependencyProperty ValueAProperty = 
     DependencyProperty.Register("ValueA", typeof(object), typeof(MyConverter)); 

    public object ValueA 
    { 
     get { return GetValue(ValueAProperty); } 
     set { SetValue(ValueAProperty, value); } 
    } 

    public object Convert(
     object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     return value.Equals(ValueA); // or whatever 
    } 

    public object ConvertBack(
     object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     throw new NotSupportedException(); 
    } 
} 

而且使用這樣的:

<DataTrigger Value="True"> 
    <DataTrigger.Binding > 
     <Binding Path="B"> 
      <Binding.Converter> 
       <local:MyConverter ValueA="{Binding A}"/> 
      </Binding.Converter> 
     </Binding> 
    </DataTrigger.Binding> 
    <Setter Property="BorderBrush" Value="Red" /> 
</DataTrigger> 

類型的依賴項屬性的可能,當然是東西比不同object

相關問題