Как привязать свойство из моего элемента управления контентом usercontrol к свойству? - PullRequest
2 голосов
/ 02 ноября 2011

У меня есть UserControl как это:

<UserControl x:Class="MySample.customtextbox"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         mc:Ignorable="d" 
         d:DesignHeight="20" d:DesignWidth="300">
<Grid>
       <TextBox x:Name="Ytextbox"  Background="Yellow"/> 
</Grid>
 </UserControl>

Я хочу использовать свой элемент управления в шаблоне mvvm ... Я хочу, чтобы я мог привязать свойство в моей модели представления к свойству текста Ytextbox

<CT:customtextbox  ?(Ytextbox)Text ="{binding  mypropertyinviewmodel}"/>

... как я могу это сделать?

1 Ответ

5 голосов
/ 02 ноября 2011

Вы должны создать свойство в UserControl и привязать его внутренне к тексту TextBox.

т.е.

<UserControl Name="control" ...>
    <!-- ... -->
        <TextBox Text="{Binding Text, ElementName=control}"
                 Background="Yellow"/>
public class customtextbox : UserControl
{
    public static readonly DependencyProperty TextProperty =
        TextBox.TextProperty.AddOwner(typeof(customtextbox));
    public string Text
    {
        get { return (string)GetValue(TextProperty); }
        set { SetValue(TextProperty, value); }
    }
}

Использование:

<CT:customtextbox Text="{Binding  mypropertyinviewmodel}"/>

(Не устанавливайте DataContext в UserControl на себя, если только вы не хотите, чтобы все внешние привязки, ожидающие сбоя наследования DataContext, использовали ElementName или RelativeSource для внутренних привязок)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...