绑定按钮单击XML中的事件

时间:2011-12-13 13:41:45

标签: wpf xml xaml binding

我正在尝试从XML文件自动生成按钮列表。

这是我的XML:

<WPFDS>
    <Title>Hospital</Title>
    <BUTTONS>
        <BUTTON id="1" visible="1">
              <Text>Content1</Text>
              <Program>b1_Click<Program>
        </BUTTON>
        <!-- ... -->
    </BUTTONS>
</WPFDS>

使WPF自动生成“按钮列表”的代码:

<XmlDataProvider x:Key="wpfds"            
                   Source="Config/Config.xml"           
                   XPath="/WPFDS"           
                   IsAsynchronous="False"           
                   IsInitialLoadEnabled="True"  
/>
<!-- ... -->
<ListBox x:Name="lbBotones" 
         ItemsSource="{Binding Source={StaticResource wpfds}, XPath=./BUTTONS/BUTTON}" 
         Margin="0,19,0,354" Grid.Row="1" IsEnabled="True" Width="607"                     
         HorizontalContentAlignment="Stretch" BorderBrush="{x:Null}" 
         Background="{x:Null}" 
         ScrollViewer.HorizontalScrollBarVisibility="Disabled"
         ScrollViewer.VerticalScrollBarVisibility="Disabled" Height="346"
>
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapPanel IsItemsHost="True" Orientation="Horizontal"/>
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
    <ListBox.ItemTemplate>                    
        <DataTemplate>                        
            <Button Height="50" Width="150" Margin="70,10"
                    Content="{Binding XPath=./Text}"                                    
            />                        
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

这样就可以正确生成按钮列表,但问题是我还需要“自动”为每个按钮分配一个Click事件。是否可以从XML文档中指定click事件? 类似的东西:

Click="{Binding XPath=./Program}"

但它不起作用。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

这不起作用,因为事件处理程序在编译时被解析;在您的情况下,事件处理程序的名称直到运行时才会被知道。无论如何,你不能在事件上设置绑定(尽管在.NET 4.5中也是如此)。