2016-06-24 5 views
0

저는 간단한 MvvmLight/UWP 프로젝트를 만들고 있습니다.TextBox Text 속성의 바인딩 모드는 기본적으로 TwoWay 여야합니다.

내 모델은 제 클래스입니다 :

public class Article : ObservableObject 
{ 
    public Guid Id { get; set; } 

    string référence; 
    public string Référence 
    { 
     get { return référence; } 
     set 
     { 
      if (référence == value) 
       return; 
      référence = value; 
      RaisePropertyChanged(); 
     } 
    } 

    string désignation; 
    public string Désignation 
    { 
     get { return désignation; } 
     set 
     { 
      if (désignation == value) 
       return; 
      désignation = value; 
      RaisePropertyChanged(); 
     } 
    } 
} 

그리고 이것은 내보기입니다 :

<Page 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="using:UniversalTest1.UWP.Articles" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    x:Class="UniversalTest1.UWP.Articles.Article_Detail" 
    mc:Ignorable="d" 
    xmlns:vm="clr-namespace:UniversalTest1.Data.ViewModels.Articles;assembly=UniversalTest1.Data" 
    d:DataContext="{d:DesignInstance Type=vm:ArticleViewModel, IsDesignTimeCreatable=True}"> 

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
     <TextBlock Text="Référence :" HorizontalAlignment="Left" Margin="24,15,0,0" VerticalAlignment="Top"/> 
     <TextBlock Text="Désignation :" HorizontalAlignment="Left" Margin="10,52,0,0" VerticalAlignment="Top"/> 

     <TextBox Text="{Binding Article.Référence, Mode=TwoWay}" HorizontalAlignment="Left" Margin="100,8,0,0" VerticalAlignment="Top" Width="300"/> 
     <TextBox Text="{Binding Article.Désignation, Mode=TwoWay}" HorizontalAlignment="Left" Margin="100,45,0,0" VerticalAlignment="Top" Width="500"/> 

     <Button Content="Sauver" Command="{Binding SauverCommand}" HorizontalAlignment="Left" Margin="102,84,0,0" VerticalAlignment="Top"/> 
    </Grid> 
</Page> 

주의하여이 텍스트 상자 바인딩의 모드 = 양방향 매개 변수입니다. 사용하지 않으면 OneWay 바인딩이 생깁니다.

TextBox.Text 속성의 바인딩이 기본적으로 TwoWay로되어 있지 않아야합니까? 일회용의 기본 모드가 다음 {바인딩 x는} 동안 this 기사에 따르면 사전에

많은 감사,
줄리앙

답변

1

는 {바인딩}에 대한 모드를 바인딩 기본 일방향이다.

바인딩에 필요하면 명시 적으로 모드를 TwoWay으로 설정해야합니다.

+0

Alex [공식 .Net 설명서] (https://msdn.microsoft.com/en-us/library/system.windows.data.binding.mode (v = vs.110) .aspx) , _ 일반적으로 사용자 정의 가능한 컨트롤 속성 (예 : 텍스트 상자 및 확인란)은 기본값 인 양방향 바인딩입니다. –

+0

.NET 문서 (WPF)가 올바른지 - WPF 텍스트 바인딩은 기본적으로 TwoWay입니다 .UWP UWP의 공식 문서는 내가 제공 한 링크에 있습니다. – AlexDrenea

+1

알렉스, 네 말이 맞다면 나 한테 말도 안돼. TextBox를 사용하고 양방향 바인딩 (사용자가 텍스트를 선택하고 복사 할 수 있지만 편집 할 수없는 읽기 전용 텍스트 상자)을 사용하지 않는 몇 가지 상황에 대해 생각해 볼 수는 있습니다. 그러나 이것은 기본값이 아니어야합니다. 행동 IMHO. –

0

흥미 롭습니다. 나도 그렇게 생각했다. 그러나 가장 안전한 방법은 속성에서 속성으로 변경 될 때 원하는 바인딩 모드를 명시 적으로 설정하는 것입니다. 그냥 추천이야.