[英]How to pass a FormatString as ConverterParameter in XAML
[英]How to pass GridView as a ConverterParameter
我試圖將ListView或GridView作為ConverterParameter傳遞但是,在Converter例程中,參數將作為類型字符串傳遞
下面是XAML列表視圖和Converter類的一部分。
任何幫助非常感謝。 謝謝!!!
<ListView Name="SeqDtStDataListView1" Grid.Row="1"
DataContext="{Binding Path=DisplayDT[0], Converter ={StaticResource
CNVToColumn},ConverterParameter=?????}"
VerticalContentAlignment="Stretch" VerticalAlignment="Stretch"
HorizontalAlignment="Stretch"
SelectionChanged="SEQDatalistview_SelectionChanged" Margin="5">
<ListView.View >
<GridView x:Name="SeqDtStDataGridView1"/>
</ListView.View>
</ListView>
轉換器:
namespace MFTest.Converters
{
public class CNVToColumn : IValueConverter
{
public object Convert(object value,
Type targetType,
object parameter,
System.Globalization.CultureInfo culture)
{
DataTable dt = (DataTable)value;
GridView GV = (GridView)parameter; <========= fail here ===========
if (dt != null && GV != null)
foreach (var colum in dt.Columns) // Binding the Columns
{
DataColumn dc = (DataColumn)colum;
GridViewColumn column = new GridViewColumn();
column.DisplayMemberBinding = new Binding(dc.ColumnName);
column.Header = dc.ColumnName;
GV.Columns.Add(column);
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
從.NET 4開始,你可以使用x:Reference
,它允許你避免一個ElementName
綁定,它只能在依賴屬性上設置,同時實現幾乎相同的東西。
由於循環依賴性限制,您無法在樹中引用內部控件或其祖先。 但是,您可以將綁定移動到一個級別,然后繼承DataContext
,例如
<Border DataContext="{Binding Path=DisplayDT[0],
Converter={StaticResource CNVToColumn},
ConverterParameter={x:Reference SeqDtStDataListView1}}">
<ListView Name="SeqDtStDataListView1" Grid.Row="1">
你無法綁定它。
ConvertParameter繼承自Object,因此不可綁定。
但是,您可以在后面的代碼中定義Binding,而不是在XAML部分中進行。
System.Windows.Data.Binding b = new System.Windows.Data.Binding();
b.ConverterParameter = this;
請在此處閱讀ConvertParameter的限制
你可以使用ConverterParameter={Binding ElementName=[insert x:Name of grid view]}
雖然恕我直言,我會重新考慮這個需求 - 你真的需要將UIControl作為轉換器參數傳遞嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.