2013-10-30 2 views
1

이 질문은 데이터 바인딩에서 형식 변환 또는 형식 지정과 관련이 없습니다.데이터 바인딩 값을 변환하는 방법

캔버스에 직사각형을 그리는 작은 응용 프로그램이 있습니다. 사용자는 사각형의 너비를 입력하는 UI를가집니다. 이 값은 user.config에 저장됩니다. 문제는 최종 사용자가 너비를 인치 또는 밀리미터 단위로 입력하려고하지만 WPF에서는 사각형의 너비가 디스플레이 독립 픽셀 (DIP)로 측정된다는 것입니다. 따라서 인치를 사용하는 경우 96을 사용하고 밀리미터를 사용하는 경우 3.84를 곱해야합니다. 이를 어떻게 달성하고 데이터 바인딩을 여전히 활용할 수 있습니까?

이 사각형의 폭을 데이터 바인딩 내 현재 XAML입니다

<Canvas x:Name="canvasPanel" > 
    <Rectangle x:Name="rect" Width="{Binding Default.Width, Mode=OneWay, Source={StaticResource Settings}}"/> 
</Canvas> 

그리고 이것은 사용자의 입력 데이터 바인딩에 대한 내 현재 XAML입니다

<TextBox Text="{Binding Default.Width, Mode=TwoWay, Source={StaticResource Settings}}"/> 

물론, 나는 선언하는 것을 잊지 마세요 App.xaml의 정적 리소스

<Application x:Class="DefectSim.App" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:properties="clr-namespace:DefectSim.Properties" 
     StartupUri="MainWindow.xaml"> 
    <Application.Resources> 
     <properties:Settings x:Key="Settings"/> 
    </Application.Resources> 
</Application> 

감사합니다.

답변

0

사용자 구성에서 정보를 추출하고 올바른 값을 제공하는 요구 사항을 처리하는 바인딩 converter을 만듭니다.

필요한 경우 더 많은 값을 변환기에 전달할 수 있도록 multibinding 바인딩을 사용하십시오.

+0

내 문제를 해결하기에 충분합니다. 그러나 간단한 변환기 대신 멀티 바인드를 사용해야 할 때 약간의 세부 사항을 제공 할 수 있습니까? – LxL

+0

@LxL 변환기에 사용할 수없는 Xaml에서 사용자 선택을 전송해야하는 경우 멀티 바인드 말을 사용하십시오. 변환기가 그러한 선택을 피하고 다른 값을 반환 할 필요가있었습니다. – OmegaMan

+0

감사합니다. 나에게 의미가 있습니다. – LxL

관련 문제