在xaml标记内设置事件处理程序方法

nos*_*bor 2 wpf xaml

有没有机会在xaml中设置事件处理程序而不使用c#,powershell等?例如,我想在点击后设置另一个控件的文本.下面是我想要做的"伪代码":

<Button Content="Set value = text1" OnClick="txt1.Text = text1" />
<Button Content="Set value = text2" OnClick="txt1.Text = text2" />
<Textbox Name="txt1" />
Run Code Online (Sandbox Code Playgroud)

Viv*_*Viv 6

您可以在xaml中编写内联c#.虽然这只是你应该不惜一切代价避免的东西.如果你绝对必须,你可以这样做:

<StackPanel>
  <Button Content="Set value = text1" Click="InlineHandler" />
  <Button Content="Set value = text2" Click="InlineHandler"  />
  <TextBox Name="txt1" />
  <x:Code>
    <![CDATA[            
          private void InlineHandler(object sender, RoutedEventArgs e) {
            var btn = sender as Button;
            if (btn == null)
              return;
            txt1.Text = btn.Content.ToString() == "Set value = text1" ? "text1" : "text2";
          }
      ]]>
  </x:Code>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

MSDN链接 - WPF中的代码隐藏和XAML

简单来说,您只需在xaml中内联定义事件处理程序,而不是在代码隐藏中定义.

再这样做不会,除非你证明一个点采取这种做法.