我正在尝试从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}"
但它不起作用。
感谢您的帮助!
答案 0 :(得分:0)
这不起作用,因为事件处理程序在编译时被解析;在您的情况下,事件处理程序的名称直到运行时才会被知道。无论如何,你不能在事件上设置绑定(尽管在.NET 4.5中也是如此)。