Я создал собственный элемент управления в WPF для Windows 10 Apps. Проблема в том, что использование системы ; используя Систему . Коллекции . Общий ; используя Систему . ComponentModel ; используя Систему . Linq ; используя Систему . Время выполнения . CompilerServices ; используя Систему . Текст ; используя Систему . Потоки . Задачи ; используя Windows . Пользовательский интерфейс . Xaml ; используя AppDemo . Аннотации ; namespace AppDemo { public class ViewModel : INotifyPropertyChanged { private String t1 , t2 ; public String T1 { get { return t1 ; } set { t1 = значение ; Concat = T1 + T2 ; } } public String T2 { get { return t2 ; } set { t2 = значение ; Concat = T1 + T2 ; } } private String concat ; public String Concat { get { return concat ; } set { concat = value ; OnPropertyChanged ( nameof ( Concat )); } } публичное событие PropertyChangedEventHandler PropertyChanged ; [ NotifyPropertyChangedInvocator ] protected virtual void OnPropertyChanged ([ CallerMemberName ] string propertyName = null ) { PropertyChanged ?. Invoke ( это , новый PropertyChangedEventArgs ( propertyName )); } } } < UserControl x : Class = "AppDemo.ExampleControl" xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns : x = "http://schemas.microsoft.com/ winfx / 2006 / xaml " xmlns : local = " используя: AppDemo " xmlns : d = " http://schemas.microsoft.com/expression/blend/2008 " xmlns : mc = " http://schemas.openxmlformats.org / markup-compatible / 2006 " mc : Ignorable = " d " d : DesignHeight = " 300 " d : DesignWidth = " 400 " > < Grid Name = " grid " > < StackPanel > < TextBox Text = " {Binding T1, Mode = TwoWay} " /> < TextBox Text = " {Binding T2, Mode = TwoWay} " /> </ StackPanel > </ Grid > </ UserControl > с использованием System ; используя Систему . Коллекции . Общий ; используя Систему . ComponentModel ; используя Систему . IO ; используя Систему . Linq ; используя Систему . Время выполнения . CompilerServices ; используя Систему . Время выполнения . InteropServices . WindowsRuntime ; используя Windows . Фонд ; используя Windows . Фонд . Коллекции ; используя Windows . Пользовательский интерфейс . Xaml ; используя Windows . Пользовательский интерфейс . Xaml . Контроль ; используя Windows . Пользовательский интерфейс . Xaml . Управление . Примитивы ; используя Windows . Пользовательский интерфейс . Xaml . Данные ; используя Windows . Пользовательский интерфейс . Xaml . Вход ; используя Windows . Пользовательский интерфейс . Xaml , СМИ ; используя Windows . Пользовательский интерфейс . Xaml . Навигация ; используя AppDemo . Аннотации ; // Шаблон элемент управления пользователя документирована в https://go.microsoft.com/fwlink/?LinkId=234236 имена AppDemo { общественного запечатаны частичный класс ExampleControl : UserControl { публичный статический чтения DependencyProperty ConcatProperty = DependencyProperty . Register ( «Concat» , typeof ( String ), typeof ( ExampleControl ), новый PropertyMetadata (по умолчанию ( String ))); private ViewModel m ; public String Concat { get { return ( String ) GetValue ( ConcatProperty ); } set { SetValue ( ConcatProperty , значение ); } } public ExampleControl () { this . InitializeComponent (); m = новый ViewModel (); сетка . DataContext = m ; м . PropertyChanged + = M_PropertyChanged ; } private void M_PropertyChanged ( отправитель объекта , PropertyChangedEventArgs e ) { Concat = m . Concat ; } публичное событие PropertyChangedEventHandler PropertyChanged ; [ NotifyPropertyChangedInvocator ] private void OnPropertyChanged ([ CallerMemberName ] string propertyName = null ) { PropertyChanged ?. Invoke ( это , новый PropertyChangedEventArgs ( propertyName )); } } } < Страница x : Class = "AppDemo.MainPage" xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns : x = "http://schemas.microsoft.com/ winfx / 2006 / xaml " xmlns : local = " используя: AppDemo " xmlns : d = " http://schemas.microsoft.com/expression/blend/2008 " xmlns : mc = " http://schemas.openxmlformats.org / markup-compatible / 2006 " mc : Ignorable = " d " > < Grid Background = " {ThemeResource ApplicationPageBackgroundThemeBrush} " > < StackPanel > < local : ExampleControl Concat = " {Binding C} " /> < Button Name = " btnTest " Нажмите = "BtnTest_OnClick" > Тест </ Button > </ StackPanel > </ Сетка > </ Page > с помощью системы ; используя Систему . Коллекции . Общий ; используя Систему . IO ; используя Систему . Linq ; используя Систему . Время выполнения . InteropServices . WindowsRuntime ; используя Windows . Фонд ; используя Windows . Фонд . Коллекции ; используя Windows . Пользовательский интерфейс . Xaml ; используя Windows . Пользовательский интерфейс . Xaml . Контроль ; используя Windows . Пользовательский интерфейс . Xaml . Управление . Примитивы ; используя Windows . Пользовательский интерфейс . Xaml . Данные ; используя Windows . Пользовательский интерфейс . Xaml . Вход ; используя Windows . Пользовательский интерфейс . Xaml . СМИ ; используя Windows . Пользовательский интерфейс . Xaml . Навигация ; // Шаблон элемента пустой страницы задокументирован на https://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409 пространстве имен AppDemo { /// <summary> /// Пустая страница, которая может использоваться сама по себе или перемещаться в пределах рамки. /// </ резюме> общественного запечатаны частичного класса MainPage : Page { общественного String , C { получить ; набор ; } public MainPage () { this . InitializeComponent (); это . DataContext = this ; } private void BtnTest_OnClick ( отправитель объекта , RoutedEventArgs e ) { String msg = C ; } } } в основном классе не работает. Он привязывается к моему настраиваемому элементу управления. Может ли кто-нибудь увидеть проблему? Как я могу исправить код. Это не работает. Специально привязка не работает. Как я могу это решить. Я понятия не имею, как это исправить.
View public String T1 { set { t1 = value; OnPropertyChanged(nameof(T1)); Concat = T1 + T2; } }l Code
Mode
c#,wpf,uwp,user-controls,xaml-binding,