2
我正在嘗試將WPF XAML中按鈕的數據模板更改爲c#代碼I.E.我想在.cs文件中以編程方式創建按鈕。將XAML更改爲C#代碼
的XAML看起來是這樣的:
<ItemsControl DataContext="{Binding Source={StaticResource Things}}" ItemsSource="{Binding}" Name="buttons" Margin="0">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<local:FishEyePanel ScaleToFit="false"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemContainerStyle>
<Style TargetType="{x:Type ContentPresenter}">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<Button Command="Open" Tag="{Binding [email protected], Path=Value}" Margin="5" Padding="5" HorizontalContentAlignment="Center" Width="{Binding [email protected]}" Height="{Binding [email protected]}"/>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</ItemsControl.ItemContainerStyle>
</ItemsControl>
行:
<Button Command="Open" Tag="{Binding [email protected], Path=Value}" Margin="5" Padding="5" HorizontalContentAlignment="Center" Width="{Binding [email protected]}" Height="{Binding [email protected]}"/>
是我綁定所有的按鈕到一個XML文件,這裏的文件:
<XmlDataProvider x:Key="Things" XPath="Things/Thing">
<x:XData>
<Things xmlns="">
<Thing Button="uno1" Tag="abc" Width="200" Height="200"/>
</Things>
</x:XData>
</XmlDataProvider>
但我想要的是,而不是調用所有的底部預定義的XML文件,用按鈕調用CS中的方法,像這個:
public void createButtons()
{
Button button = new Button();
button.Tag = "I am from cs";
buttons.Items.Add(button);
}
這可能嗎?
究竟對我們的'createButtons()'方法不起作用?一般來說,XAML中可能的所有內容在C#代碼中也是可能的。 –
你爲什麼想這樣做?使用XAML有什麼問題? –
是的,這是可能的。你有什麼嘗試?如果您在編碼時存在一些問題,請諮詢相關問題。如果你想在某個地方開始,看看'button.ItemContainerStyle'和'buttons.ItemsPanel',看看它們的類型,然後從那裏開始。這對我來說並沒有太大的意義,爲什麼你想這樣做呢。如果你解釋爲什麼你想這樣做,有人可能會提出一個更好的方法。 –