Я создал пользовательский элемент управления CustomTextBox, унаследованный от класса TextBox. Я создал свойство зависимостей с именем CustomTextProperty.Зависимость настройки пользовательского контроля WPF.
Я связал этот DP с моим свойством Viewmodel.
При регистрации DP я дал обратный вызов изменения свойства, но он вызван только один раз, когда мой элемент управления получает привязанные данные изначально, когда загружается мой xaml.
Когда я пытаюсь настроить свой контроль из вида, связанный с ним набор свойств VM не вызывается, а свойствоchangecallback не запускается.
Пожалуйста, помогите!
Код snipet ниже:
Мой заказ управления
class CustomTextBox : TextBox
{
public static readonly DependencyProperty CustomTextProperty = DependencyProperty.Register("CustomText",
typeof(string), typeof(CustomTextBox),
new FrameworkPropertyMetadata("CustomTextBox",
FrameworkPropertyMetadataOptions.BindsTwoWayByDefault,
new PropertyChangedCallback(OnCustomPropertyChange)));
public string CustomText
{
get { return (string)GetValue(CustomTextProperty); }
set { SetValue(CustomTextProperty, value); }
}
private static void OnCustomPropertyChange(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
// This is Demo Application.
// Code to be done Later...
}
}
My View Model:
public class ViewModel : INotifyPropertyChanged
{
private string textForTextBox;
public string TextForCustomTextBox
{
get
{
return this.textForTextBox;
}
set
{
this.textForTextBox = value;
this.OnPropertyChange("TextForCustomTextBox");
}
}
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChange(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
}
Мой Xaml код с Переплет:
<custom:CustomTextBox x:Name="CustomTextBox"
CustomText="{Binding TextForCustomTextBox, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Grid.Row="1" HorizontalAlignment="Center" Width="200" Height="50" />
Мой код Behind к установить DataContext:
// My View Constructor
public View1()
{
InitializeComponent();
this.DataContext = new ViewModel();
}
Почтовый код, как вы устанавливаете его из кода? –
Где код, задающий 'DataContext'? Вы установили «DataContext» где-нибудь в XAML или в коде? Все, что вы опубликовали, похоже, что это сработает. –
Спасибо за ответ ... я отредактировал код выше, показывая, что datacontext будет установлен в экземпляр класса ViewModel. – Deepanshu