【解決方法】Mvvm は、コードを介してボタンのコンテキストを変更します


おはようございますコードでボタンのコンテキストを変更しようとしているので、デフォルトではボタンにテキストがありません

ボタンのコンテキストを設定しようとすると、これは私がこれまでに持っているものです

私が試したこと:

xaml

XML
<Button x:Name="vsbutton"
        Content="{Binding Elfenlied,
                  UpdateSourceTrigger=PropertyChanged, Mode=OneWay}"
        Foreground="BlueViolet"
        Margin="4"
        Height="20"
        Command="{Binding vstest}">

インストール VM

C#
public string Elfenlied
{
    get { return _elfenlied; }
    set 
    {
        _elfenlied = value; 
        OnPropertyChanged(nameof(Elfenlied));
    }
}
C#
public InstallVM()
{
    try
    {
        Elfenlied = WeakReferenceMessenger
            .Default
            .Send<VSInstalledMessage>();
    }
    catch(Exception ex)
    {
               
    }
}

私はtry catchを入れました

インストールに入る前にメニューのダウンロードビューが選択されていない場合、nullを返すことがあるため、修正に取り組んでいます

しかし、それが変更されてデバッグし、elfenlied の値が vs already installed の場合

これはボタンのテキストには反映されず、まだ空白として表示されます
価値のある
コードビハインド

UI
うい

どんな助けでも大歓迎です

解決策 1

あなたのコードにはいくつかの問題があります:
1. ViewModel を View にバインドする DataContext をどこに設定したかわかりません。

2. ボタンに 2 つのエラーがあります。 変化:

XML
<Button x:Name="vsbutton"
        Content="{Binding Elfenlied,
                  UpdateSourceTrigger=PropertyChanged, Mode=OneWay}"
        Foreground="BlueViolet"
        Margin="4"
        Height="20"
        Command="{Binding vstest}">

に:

XML
<Button x:Name="vsbutton"
        Content="{Binding Elfenlied}"
        Foreground="BlueViolet"
        Margin="4"
        Height="20"
        Command="{Binding VsTestCommand}">

どこ:
を。 Elfenlied ViewModel のパブリック プロパティです。これを行ったようです。
b. VsTestCommand を持っています ICommand ボタン クリック イベントを処理するために ViewModel に実装されます。

最後に、あなたがこれで何をしているのかわかりません…

C#
public InstallVM()
{
    try
    {
        Elfenlied = WeakReferenceMessenger
            .Default
            .Send<VSInstalledMessage>();
    }
    catch(Exception ex)
    {
               
    }
}

クラスの作成時に、アプリの別の部分にメッセージを送信しようとしていますか?

コメント

タイトルとURLをコピーしました