다중 바인딩에서 1 바인딩에 대한 상수 값을 어떻게 전달할 수 있습니까?


97

나는 같은 다중 바인딩이 있습니다

<TextBlock>
    <TextBlock.Text>
        <MultiBinding Converter="{StaticResource myConverter}">
            <Binding Path="myFirst.Value" />
            <Binding Path="mySecond.Value" />
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>

그리고 위의 두 바인딩 중 하나에 "123"과 같은 고정 값을 전달하고 싶습니다. XAML을 사용하여 어떻게 할 수 있습니까?


1
코드 스 니펫 / 예제를주세요.
Torsten 2010-07-27

질문의 일부가 누락되었다고 생각합니다. 위의 바인딩을 참조하고 있지만 질문에 바인딩 코드가 표시되지 않습니다.
akjoshi

1
어떻게 든 질문이있을 때마다 누군가 이전에 똑같은 질문을했습니다. :) 좋습니다!
Ignacio Soler Garcia

1
이를 수행하는 네 번째 방법은 다음 답변을 사용하는 것입니다. stackoverflow.com/a/2552911/222134
Johny Skovdal 2014 년

답변:


146

값이 단순히이면 바인딩 속성 string에서 상수로 지정할 수 있습니다 Source. 다른 기본 데이터 유형 인 경우 정적 리소스를 정의하고이를 참조해야합니다.

mscorlib에서 sys가리 키도록 XAML의 루트에 네임 스페이스를 정의하면 System다음이 작동합니다.

<TextBlock>
  <TextBlock.Resources>
    <sys:Int32 x:Key="fixedValue">123</sys:Int32>
  </TextBlock.Resources>
  <TextBlock.Text>
    <MultiBinding Converter="{StaticResource myConverter}">
      <Binding Path="myFirst.Value" />
      <Binding Source="{StaticResource fixedValue}" />
    </MultiBinding>
  </TextBlock.Text>
</TextBlock>

1
@tofutim MultiBinding에 리소스가없는 것 같기 때문입니다. 대신 TextBlock.Resources를 사용하십시오 ...
Martin Hennings

6
= "CLR-네임 스페이스 : 시스템, 조립 = mscorlib에"SYS : 어쩌면 당신의 xmlns를 추가해야 솔루션에 ;-)
c0d3b34n

103

또는 위의 두 답변을 결합합니다.

<MultiBinding Converter="{StaticResource ScalingConverter}">
    <Binding>
        <Binding.Source>
            <sys:Double>0.5</sys:Double>
        </Binding.Source>
    </Binding>
    <Binding ElementName="TC" Path="ActualWidth" />
</MultiBinding>

Resources kludge없이 올바른 유형을 제공합니다.


1
sys문서 헤드에서 네임 스페이스를 정의해야합니다 .xmlns:sys="clr-namespace:System;assembly=mscorlib"
Beauty

25

나는 질문을 잘 따르지 않지만 두 가지 옵션이 있습니다.

<Binding Source="123" />멀티 바인딩에 라인 을 넣으면 123이 변환기에 바운드 값으로 전달됩니다.

ConverterParameter="123"MultiBinding에 넣으십시오 .

<MultiBinding Converter="{StaticResource conv}" ConverterParameter="123">


<Binding Source = "123"/>는 DependencyProperty.UnsetValue를 전달하는 것 같습니다
Josh Stribling

<Binding Source = "123"/>는 필자의 경우 의도 한 정수 또는 double 대신 문자열 "123"을 전달합니다.
Marcel Gosselin

에서 IValueConverter, 매개 변수는 다음과 같이 전달됩니다 object당신이 안전한 방법으로 올바른 형식으로 값을 캐스팅해야 의미한다. IValueConverter.Convert
benPearce

4

나는 이것이 특히 좋은 대답이라고 말하는 것이 아니지만 여기에 또 다른 접근 방식이 있습니다.

<Binding Path="DoesNotExist" FallbackValue="123" />
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.