控制事件不从链接到资源字典wpf的类触发

时间:2014-02-08 23:31:33

标签: wpf resourcedictionary uicontrolevents

您好我正在尝试将一个函数附加到用于输入从资源字典加载到接口的某些输入信息的文本框。这是XML,

          <ContentControl>
            <Grid>
                <Image s:DesignerItem.Code ="1773"  IsHitTestVisible="False" Stretch="Fill" Source="../Images/addition.png"  ToolTip="Addition" />
                <TextBox Height="57" Width="56" Margin="13,13,130,13" BorderThickness="0" FontSize="45" HorizontalAlignment="Center" VerticalAlignment="Center" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" TextChanged="msg_TextChange" KeyUp="msg_MouseDown"/>
                <TextBox Height="57" Width="56" Margin="132,13,12,13" BorderThickness="0" FontSize="45" HorizontalAlignment="Center" VerticalAlignment="Center" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" KeyDown="msg_MouseDown"/>
                <Button MouseDown="msg" Width="50" Height="20">ck</Button>
            </Grid>
           </ContentControl>

从上面的代码中,我尝试使用几种不同类型的控件事件。我成功地将我的函数链接到了我的函数,使用以下行将类链接到资源字典。

 x:Class="DiagramDesigner.CodeBuilding"
 x:ClassModifier="public"

以下是我正在使用的类的代码,

 public partial class CodeBuilding : ResourceDictionary
{
   public CodeBuilding()
   {
      InitializeComponent();
   } 

   public void msg_TextChange(object sender,EventArgs e)
   {
       MessageBox.Show("oh no, you've got me ...");
   }

   public void msg(object sender, MouseEventArgs e)
   {
       MessageBox.Show("oh no, you've got me ...");
   }
}

正如您所看到的,我只是使用一条简单的消息来指示事件是否已被触发,项目是否成功构建并运行良好,但是当我尝试触发任何一个 XML中使用的事件与事件关联的函数根本不会触发。

我不确定这是否是将函数链接到资源字典加载的事件的最佳方法,但是任何人都可以为我遇到的这个问题提供一些指导。

1 个答案:

答案 0 :(得分:0)

XAML文件应该依赖于文件后面的部分代码才能使事件起作用。

确保将文件后面的代码构建操作设置为Compile

同时在记事本或任何文本编辑器中打开.csproj文件,并确保在XAML文件上设置DepedentUpon属性。它看起来像这样:

<Compile Include="CodeBuilding.xaml.cs">
  <DependentUpon>CodeBuilding.xaml</DependentUpon>
</Compile>

另一方面,让它像这样工作的简单步骤是:

  1. 在项目中添加空白UserControl。它将自动为我完成上述工作。
  2. 您只需将XAML文件更改为ResourceDictionary即可。 (将UserControl替换为ResourceDictionary)。
  3. 在后面的代码中,只需将基类从UserControl更改为ResourceDictionary