2

我的视图模型类中有一个方法,通过单击按钮调用并执行一些操作。现在我的 xaml 文件中有一个标签和按钮:

<Label Content="" Height="20" HorizontalAlignment="Center" Margin="0,50,0,0" Name="label1" VerticalAlignment="Top" Width="119" />
<Button Content="Sync" Height="23" Command="{Binding Path=SyncCommand}" HorizontalAlignment="Center" Margin="0,15,0,0" Name="button1" VerticalAlignment="Top" Width="100" />

我的视图模型:

    // This method is called when Sync Button is Clicked
    public void SyncCommandExecuted()
    {            
        string strBadResp = string.Empty;  
        Byte[] sendBuf = new Byte[256];
        Byte[] readBuf = new Byte[256];          
        sendBuf[0] = 0x80;
        mComm.setAddress(0x3e);
        mComm.WriteBytes(4, sendBuf);

        if (mComm.ReadBytes(4, ref readBuf) != 0)
        {                
            for (int cnt = 0; cnt < 4; cnt++ )
            {
                if (readBuf[cnt] != null)
                {
                    sendBuf[cnt] = readBuf[cnt];                        
                }
                else
                {                        
                    strBadResp = "Bad response";

                    // Here I want to display the content in strBadResp i.e. BAD RESPONSE on a label
                    sendBuf = null;                        
                }
            }

            if (sendBuf != null)
            {
                strBadResp = BitConverter.ToString(sendBuf);

                // Here I want to display the content in strBadResp on a label
            }                
        }
    }

我的 ReadBytes 方法存储以下内容:

byteArray[0] = 0x01;
byteArray[1] = 0x02;
byteArray[2] = 0x03;
byteArray[3] = 0x04;

所以基本上在这两个地方,结果(strBadResp)都应该在标签中。我希望我已经说清楚了。我是这个 WPF 世界的新手。请帮忙!!!

4

2 回答 2

2

将标签上的内容属性绑定到视图模型上的属性。当您想要更新标签时更新响应属性。

看法

<Label Content="{Binding Response}" Height="20" HorizontalAlignment="Center" Margin="0,50,0,0" Name="label1" VerticalAlignment="Top" Width="119" />

视图模型

public class YourViewModel : INotifyPropertyChanged {

    string response;

    public string Response {

        get  { return this.response; }

        set {
            if (this.response == value)
                return;

            this.response = value;
            NotifyPropertyChanged("Response");
        }
    }

    public event NotityPropertyChangedEventHandler  = delegate {}

    void NotifyPropertyChanged(string propertyName) {
        PropertyChanged(this, new PropertyChangedEventArgs(propertyName);   
    }
  }
于 2012-10-04T05:56:39.223 回答
1

您必须在后面的代码中创建 Lable 对象,如下所示。

var lableMSG = new Lable();

lableMSG.Content = "Message string";

希望对你有帮助!!

于 2012-10-04T04:53:18.050 回答