Как я могу установить код Xaml для свойства из его собственного XAML.например "это" - PullRequest
0 голосов
/ 13 июня 2019

У меня есть Xalin-файл Xamarin с формами MasterDetailPage, где я создал строковое свойство.

Я хочу установить это свойство из внешнего интерфейса Xaml. Я знаю, это кажется новым вопросом, но из-за крика вслух я не могу заставить что-либо работать.

Кто-нибудь знает, как это сделать?

1007 * Е.Г. *

this.stringProperty = "string" В разметке XAML.

Или псевдокод

{RelativeSource Self} .stringProperty = "string"

Спасибо

@ ТРС

Позвольте мне уточнить, используя ваш код. Мне нужна только первая часть вашего кода.

public partial class MainWindow : Window <-- YOUR CODE
{

   private testString;  <-- ADDED THIS

    public MainWindow()
    {
        InitializeComponent();
        DataContext = new MyClass(); <-- REMOVED THIS

    public string TestString;    <-- ADDED THIS
    {
        get => testString;  
        set
        {
         testString;   = value;
        }
    }
}

Теперь я хочу установить свойство "TestString" из XAML MainWindow этого же частичного класса.

<Window x:Class="WpfApp6.MainWindow"
x:Name="Mywindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp6"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">

SET TestString PROPERTY IN THE CODE BEHIND HERE IN THE XAML

Итак, имея это в виду. Как я могу это сделать?

1 Ответ

0 голосов
/ 13 июня 2019

Вот минимальный рабочий пример для вас. Но вы должны прочитать о DataContext, INotifyPropertyChanged и MVVM, чтобы понять это полностью, в противном случае у вас будет много вопросов.

<Window x:Class="WpfApp6.MainWindow"
    x:Name="Mywindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:WpfApp6"
    mc:Ignorable="d"
    Title="MainWindow" Height="450" Width="800">
<Grid>
    <TextBlock Text="{Binding MyString}"></TextBlock>

</Grid>

и код позади

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        DataContext = new MyClass();
    }
}

public class MyClass : INotifyPropertyChanged
{
    private string _myString;

    public string MyString
    {
        get => _myString;
        set
        {
            _myString = value;
            OnPropertyChanged();
        }
    }


    public event PropertyChangedEventHandler PropertyChanged;

    [NotifyPropertyChangedInvocator]
    protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...