Я создал usercontrol, но я не могу заставить работать с привязкой, я пытался разными способами, но я не получил его работать, значение не отображается.Проблема с привязкой в пользовательском элементе управления
ShowPrice.cs
public static readonly DependencyProperty ValueProperty =
DependencyProperty.Register("Value", typeof(string), typeof(ShowPrice),
new FrameworkPropertyMetadata
(
string.Empty,
FrameworkPropertyMetadataOptions.Journal |
FrameworkPropertyMetadataOptions.BindsTwoWayByDefault,
OnValuePropertyChanged
));
public string Value
{
get { return (string)GetValue(ValueProperty); }
set { SetValue(ValueProperty, value); }
}
private static void OnValuePropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
{
var showPrice = obj as ShowPrice;
showPrice?.SetValue(ValueProperty, (string)e.NewValue);
}
ShowPrice.xaml
<UserControl x:Class="WPF.CustomControls.UserControls.ShowPrice"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
DataContext="{Binding RelativeSource={RelativeSource Self}}">
<TextBlock Text="{Binding Value}"
HorizontalAlignment="Center"
Foreground="White"
FontSize="40"
Margin="5" />
</UserControl>
Мой view.xaml
<userControls:ShowPrice Value="{Binding MyViewModelProperty, StringFormat=C2, ConverterCulture='es-AR'}">
</userControls:ShowPrice>
Если я предписанием е значение, если она работает
<userControls:ShowPrice Value="Test"/>
Похоже, ваша проблема в том, что модель просмотра не привязана к вашему представлению, потому что она не находит MyViewModelproperty. Как вы говорите, если вы установите «Значение» явно, это работает, поэтому проблема не в ShowPrice.xaml. –
Также вам не нужна строка «showPrice? .SetValue (ValueProperty, (строка) e.NewValue); Это избыточность средства определения ценности. –