Я создал UserControl, который имеет свойство Hero
Доступ к UserControl свойство от другого UserControl
public partial class UcHeros : UserControl
{
public UcHeros()
{
InitializeComponent();
Hero = "Spiderman";
}
public static readonly DependencyProperty HeroProperty = DependencyProperty.Register("Hero", typeof(string), typeof(UcHeros), new PropertyMetadata(null));
public string Hero
{
get { return (string)GetValue(HeroProperty); }
set { SetValue(HeroProperty, value); }
}
}
Я использую этот UserControl внутри окна, как это:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:wpfApplication1="clr-namespace:WpfApplication1"
DataContext="{Binding RelativeSource={RelativeSource Self}}"
Title="MainWindow" Height="350" Width="525">
<Grid>
<StackPanel>
<wpfApplication1:UcHeros x:Name="Superhero" />
<Button Click="OnClick">Click</Button>
</StackPanel>
</Grid>
</Window>
Теперь, чтобы получить значение Героя Я использую это:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
public static readonly DependencyProperty HumanProperty = DependencyProperty.Register("Human", typeof(string), typeof(MainWindow), new PropertyMetadata(null));
public string Human
{
get { return (string)GetValue(HumanProperty); }
set { SetValue(HumanProperty, value); }
}
private void OnClick(object sender, RoutedEventArgs e)
{
Debug.WriteLine(Superhero.Hero);
}
}
Я могу получить доступ к Hero потому что я дал имя этому UserControl в своем объявлении XAML x:Name="Superhero"
, но как я могу получить доступ к этому значению, если я удалю свойство Name?
Я имею в виду: как я могу сохранить значение Hero
в значении Human
с использованием своего рода привязки!
Это не MVVM. – MoonKnight
Да это MVVM sir, а событие Click - это всего лишь образец теста. Вместо этого я мог бы использовать ICommand. –
Нет, это не так. Вы используете обработчик событий и помещаете это в код позади. Это нарушает предполагаемый шаблон MVVM. – MoonKnight