0
對不起,我不是那麼很一般的問題......從代碼中創建的DataTemplate背後
我有一個ListView我從代碼填寫後面,這ListView控件還需要從代碼獲取其GridViewColumn的後面。
對於字符串,是不需要努力進行連接,但現在我wan't創建一個代表在ListView一個布爾值,一個橢圓。
在XAML代碼是相當容易的,但我在它轉換成C#代碼失敗。
這裏是XMAL的部分代碼:
<ResourceDictionary>
<BooleanToVisibilityConverter x:Key="BoolToVisibility" />
<DataTemplate x:Key="templateAdmin">
<DockPanel>
<Ellipse Width="8" Height="8" Visibility="{Binding Path=isAdmin, Converter={StaticResource BoolToVisibility}}" Fill="Black"/>
</DockPanel>
</DataTemplate>
</ResourceDictionary>
<ListView>
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding LastName}" Header="Last Name"/>
<GridViewColumn CellTemplate="{StaticResource templateAdmin}"
<GridViewColumnHeader">
<TextBlock Text="S"/>
</GridViewColumnHeader>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
而且現在我已經得到了這一步: XAML:
<local:SortableListView >
<ListView.View>
<GridView x:Name="GroupListGridView" />
</ListView.View>
</local:SortableListView>
而在代碼中,我有一個Collection<GridViewColumn> GridViewColumns
我環路通過量和將所有項目添加到GroupListGridView
。我有一個功能,填補了GridViewColumns
集合:
private void CreateGridViews()
{
//Creating the Text was easy!
GridViewColumns.add(new GridViewColumn(){ Header = "LastName", DisplayMemberBinding = new Binding("LastName") });
//Creating the Ellipse was harder!
GridViewColumn gvc = new GridViewColumn();
DataTemplate dt = new DataTemplate();
gvc.DisplayMemberBinding = new Binding("isAdmin");
FrameworkElementFactory fef = new FrameworkElementFactory(typeof(Ellipse));
fef.SetValue(Ellipse.WidthProperty, 8.0D);
fef.SetValue(Ellipse.HeightProperty, 8.0D);
fef.SetValue(Ellipse.FillProperty, new System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.Black));
//I'm guessing that somewhere here there should be some binding to the visibility property and some sort of conversion done... But I can't figure out how!
dt.VisualTree = fef;
gvc.CellTemplate = dt;
GridViewColumns.Add(gvc);
}
我不認爲我遠遠的......只是,我無法找出那些最後的步驟!
是否有一個真正的好在代碼背後創建它的原因? – Charleh
clone http://stackoverflow.com/questions/248362/how-do-i-build-a-datatemplate-in-c-sharp-code –