糾正我,如果有這樣做的更好的辦法:)訪問產生的UI元素代碼
我要補充UIElement
(在我的情況StackPanel
)動態我的XAML。
我的代碼:
foreach (Dienstleistung dienstleistung in dienstleistungenList)
{
var xaml = System.Windows.Markup.XamlWriter.Save(StackPanelTemplate);
var deepCopy = System.Windows.Markup.XamlReader.Parse(xaml) as StackPanel;
foreach (UIElement child in deepCopy.Children)
{
if (child is TextBlock)
{
var y = child as TextBlock;
switch (y.Text)
{
case "Titel":
y.Text = dienstleistung.Title;
break;
case "Beschreibung":
y.Text = dienstleistung.Summary;
break;
}
}
}
MainContainer.Children.Add(deepCopy);
}
的XAML:
<WrapPanel Name="MainContainer" HorizontalAlignment="Center" VerticalAlignment="Center">
<StackPanel Name="StackPanelTemplate" Margin="5px" Width="200px" MouseLeftButtonUp="StackPanelOnClick">
<StackPanel.Style>
<Style>
<Setter Property="Border.Background" Value="LightCyan"/>
<Style.Triggers>
<Trigger Property="Border.IsMouseOver" Value="True">
<Setter Property="Border.Background" Value="LightGreen" />
</Trigger>
</Style.Triggers>
</Style>
</StackPanel.Style>
<Image Margin="5px" Width="190px" Height="190px"></Image>
<TextBlock TextAlignment="Center" TextWrapping="WrapWithOverflow" Margin="5px" FontSize="16">Titel</TextBlock>
<TextBlock TextAlignment="Center" TextWrapping="WrapWithOverflow" Margin="5px">Beschreibung</TextBlock>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
<TextBox x:Name="txtNum" x:FieldModifier="private" Margin="5,5,0,5" Width="50" Text="0" TextChanged="txtNum_TextChanged" />
<Button x:Name="cmdUp" x:FieldModifier="private" Margin="5,5,0,5" Content="˄" Width="20" Click="cmdUp_Click" />
<Button x:Name="cmdDown" x:FieldModifier="private" Margin="0,5,0,5" Content="˅" Width="20" Click="cmdDown_Click" />
</StackPanel>
</StackPanel>
</WrapPanel>
總之,我有一個模板,我複製它。
現在我有一個TextBox
在我的模板中,我有一個TextChanged
事件。現在我的問題是,爲什麼這個事件不會觸發?有沒有辦法訪問這些生成的元素?
丟棄所有代碼並仔細閱讀MSDN上的[數據模板概述](https://msdn.microsoft.com/en-us/library/ms742521.aspx)文章。然後使用ObservableCollection的Dienstleistung項目創建一個視圖模型,並將ListBox的ItemsSource屬性綁定到該集合。在ListBox的ItemTemplate中,聲明TextBoxes並將其Text屬性綁定到相應的Dienstleistung屬性。 – Clemens