2017-01-29 5 views
0

含まれているコントロールのViewModel内のプロパティにバインドしようとしていますが、WPFではプロパティにバインドできません。これを行うと、エラーが報告されます。ViewModelは、Windows Presentation Foundation(WPF)プロジェクトではサポートされていません。他のコントロールのビューモデルへのバインド

ViewModelのプロパティにXAMLを使用してバインドする方法はありますか、またはすべてのViewModelの修正をコードの背後で実行する必要はありますか?

メインウィンドウのXAML:

<Window x:Class="MyNamespace.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:local="clr-namespace:MyNamespace" 
    mc:Ignorable="d" 
    Title="MainWindow"> 
<Grid> 
    <!-- Error: Can't bind to ViewModel.MyValue --> 
    <local:UserControl1 ViewModel.MyValue="123"/> 
</Grid> 

ユーザーコントロールクラス:

public partial class UserControl1 :UserControl 
{ 
    public UserControl1() 
    { 
     InitializeComponent(); 

     ViewModel = new UserControlViewModel(); 
    } 

    public UserControlViewModel ViewModel 
    { 
     get 
     { 
      return (UserControlViewModel) GetValue(ViewModelProperty); 
     } 
     set 
     { 
      SetValue(ViewModelProperty, value); 
     } 
    } 

    public static readonly DependencyProperty ViewModelProperty = DependencyProperty.Register(nameof(ViewModel), typeof(UserControlViewModel), typeof(UserControl1), new PropertyMetadata(null)); 
} 

ユーザーコントロールのビューモデルクラス:

public class UserControlViewModel 
{ 
    public string MyValue 
    { 
     get; 
     set; 
    } 
} 
+1

あなたはXAMLでネストされたプロパティにアクセスすることはできません。 –

答えて

1

いいえ、あなたにXAMLを使用することはできませんネストされた適切なものを設定するコントロールの依存関係プロパティのTY:

Can I use XAML to set a nested property (property of the value of a property) of a control?

あなたが唯一のプロパティそのものの値を設定することができます。

<local:UserControl1> 
    <local:UserControl1.ViewModel> 
     <local:UserControlViewModel MyValue="123" /> 
    </local:UserControl1.ViewModel> 
</local:UserControl1> 
関連する問題