我試圖動態地創建一些XAML控件。我想我知道我怎麼可以自己添加「東西」,但我不知道如何將它添加到指定的位置。如何指定在c#中添加xaml控件的位置?
這裏是XAML -file(toolStencils.xaml)的一個樣本:
<LinearGradientBrush x:Key="colorTemplate" StartPoint="0.6,0" EndPoint="0,1" Opacity="1">
<LinearGradientBrush.GradientStops>
<GradientStop Color="Black" Offset="0.01" />
<GradientStop Color="Green" Offset="0.5" />
<GradientStop Color="Blue" Offset="1" />
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
<!-- ToolTemplate -->
<Grid IsHitTestVisible="False" ToolTip="Tool 1">
<Path Stretch="Fill" IsHitTestVisible="False"
StrokeLineJoin="Round"
Fill="{StaticResource colorTemplate}"
Stroke="Black"
StrokeThickness="0.2"
Data="M 0,0 H60 V60 H0 Z">
<s:ToolItem.Template>
<ControlTemplate>
<Path Fill="Transparent" Stretch="Fill" Data="M 0,0 H60 V50 H0 Z"/>
</ControlTemplate>
</s:ToolItem.Template>
</Path>
<Grid Margin="2">
<Label VerticalAlignment="Top"
HorizontalAlignment="Right"
Content="Tool number 1"
FontSize="10">
<Label.Resources>
<Style TargetType="TextBlock">
<Setter Property="TextWrapping" Value="Wrap"/>
</Style>
</Label.Resources>
</Label>
</Grid>
</Grid>
<s:Toolbox x:Key="Tools" ItemSize="80,75">
<ItemsControl.Items x:Uid="itemControls">
<!-- Tool 1 -->
<!-- ........... -->
</ItemsControl.Items>
</s:Toolbox>
現在,我想添加更多的 「工具」 動態。 (worker.cs)
// Load the resource dictionary
var rd = new System.Windows.ResourceDictionary();
rd.Source = new System.Uri("pack://application:,,,/MyApplication;component/FirstFolder/SecondFolder/MyXamlFile.xaml", System.UriKind.RelativeOrAbsolute);
//
if() // Do something
{
// Build and add same kind of tools than listed in xaml file
// Grid grid = new Grid();
// etc...
}
else
{
System.Windows.MessageBox.Show("Couldn't add tools.");
}
如何添加所有<ItemsControl.Items>
裏面的東西?然後,如果我添加Grid,例如,如何定義,添加哪些內容以及哪些內容不是?
我看了,並嘗試例如WPF: Add controls from code和Adding WPF Controls。
問題是,我分開.xaml文件和.cs文件。所以我不能直接引用名稱或鍵。
我希望你能稍微得到我的觀點。
提前致謝!
只需使用模板。不要浪費你的時間來對抗框架。 –