2014-04-22 4 views
14

속성이있는 WPF 컨트롤이 있습니다.두 속성에 대한 WPF 바인딩

나는 현재이 있습니다

<dxlc:LayoutItem > 
      <local:Indicator Message="{Binding PropertyOne}" /> 
</dxlc:LayoutItem> 

을하지만 난 Message 속성이 두 가지 속성에 바인딩 할 것을 필요가있다.

은 분명히 다음과 같이 수행 할 수없는, 그러나 이것은 도움이 내가 원하는 무엇인지 설명 할 수 :

<dxlc:LayoutItem > 
      <local:Indicator Message="{Binding PropertyOne && Binding PropertyTwo}" /> 
</dxlc:LayoutItem> 
+0

가능한 복제본 : https://stackoverflow.com/q/2552853/1518546 –

답변

23

MultiBinding 사용 시도해보십시오

가 부착 바인딩 개체의 컬렉션을 설명합니다 단일 바인딩 대상 속성

예 :

XAML

<TextBlock> 
    <TextBlock.Text> 
     <MultiBinding Converter="{StaticResource myNameConverter}" 
        ConverterParameter="FormatLastFirst"> 
      <Binding Path="FirstName"/> 
      <Binding Path="LastName"/> 
     </MultiBinding> 
    </TextBlock.Text> 
</TextBlock> 

Converter

public class NameConverter : IMultiValueConverter 
{ 
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) 
    { 
     string name; 

     switch ((string)parameter) 
     { 
      case "FormatLastFirst": 
       name = values[1] + ", " + values[0]; 
       break; 
      case "FormatNormal": 
       default: 
       name = values[0] + " " + values[1]; 
       break; 
     } 

     return name; 
    } 

    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) 
    { 
     string[] splitValues = ((string)value).Split(' '); 
     return splitValues; 
    } 
} 
+1

정확히 내가 필요한 것, 감사합니다! –

+0

이것은 이것을 달성하는 데 끔찍하게 자세한 방법입니다. –

6

당신은 XAML에서 And 작업을 할 수 없습니다.

반환 할 두 가지 속성의 래퍼 속성을보기 모델 클래스에 만들고 대신 해당 속성으로 바인딩하십시오.

public bool UnionWrapperProperty 
{ 
    get 
    { 
     return PropertyOne && PropertyTwo; 
    } 
} 

XAML

<local:Indicator Message="{Binding UnionWrapperProperty}" /> 

또 다른 방법은 MultiValueConverter 사용하는 것입니다. 두 속성을 전달하고 변환기에서 And 값을 반환하십시오.

+0

게시하신 글은'Bitwise AND'가 아닙니다. 그것은 단지'AND' 연산자입니다. 어쨌든, 나는 그 유형이 무엇이든 상관없이 연결시켜야한다고 생각한다. – gleng

+2

예. 그러나 OP는 질문에 아무것도 언급하지 않았고 문자열 (또는 모든 유형)을 '&&'할 수 없으므로 언급하지 않았습니다. 그래서, OP가 bool 속성을 원한다고 가정하고있었습니다. OP가 사진을 지우면 업데이트됩니다. –

10
<TextBlock.Text> 
    <MultiBinding StringFormat="{}{0} {1}"> 
     <Binding Path="FirstName"/> 
     <Binding Path="LastName"/> 
    </MultiBinding> 
</TextBlock.Text> 
+0

단순히 최고 !! – Ranger

관련 문제