[英]Binding datagrid
我一直在嘗試將DataGridTextColumns按列方式綁定到數組(我認為是int []),但沒有成功。 我在msdn,stackoverflow等上都找不到特別有用的東西。
<DataGrid AutoGenerateColumns="False" VerticalAlignment="Top" Margin="0,47,0,0" Height="351" Name="dataGrid1" IsReadOnly="True" CanUserAddRows="False" CanUserDeleteRows="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Slave Address" Width="100" Binding="{Binding SlaveAddressValues}"/>
<DataGridTextColumn Header="Meter Readings" Width="100" Binding="{Binding MeterReadingValues}"/>
</DataGrid.Columns>
</DataGrid>
我已經嘗試了很多方法,包括使用datagrid或datagridtextcolumns(itemsource等)進行綁定,在代碼中定義datacontext(出於mvvm的原因,我希望盡可能地避免使用代碼),使用路徑和源代碼,並嘗試將我的兩個數組組合到一個類中(無論如何我都不是真正想要的)。 但是,即使使以下簡單測試用例正確綁定到數據網格也沒有任何效果。
private int[] SlaveAddressValues = { 0, 0, 0, 0 };
private int[] MeterAddressValues = { 2, 2, 2, 3 };
任何人有任何想法嗎?
是的,也許我應該把我的解決方案放在這里,但是它有點長,所以我把它作為答案。 無論如何,這是許多方式中的一種,因此,如果您願意,可以發布另一個答案。
首先,您不能綁定到私有字段,需要將它們設置為公共屬性:
private int[] _slaveAddressValues = { 0, 0, 0, 0 };
public int[] SlaveAddress
{
get { return _slaveAddressValues; }
set { _slaveAddressValues = value; }
}
(請注意,我省略了屬性設置通知。)
第二個問題是,您不應像這樣將DataColumn綁定到繼承的數據上下文的獨立屬性-它需要綁定到已綁定到網格的ItemsSource 的IEnumerable中包含的項目的屬性。 。 這是另一個示例 。
希望這些鏈接會有所幫助,至少應該使您入門。
需要綁定到一個來源
class Address
{
public Int Slave { get; set; }
public Int Meter { get; set; }
}
創造
Public List<Address> Addresses { get; set; }
將DataGrid綁定到地址
然后在列上將路徑綁定到Slave和Meter
是的,謝謝您的回答。 這是我最終解決的方法:
public List<Address> Addresses = new List<Address>();
在我的主要班級
dataGrid1.DataContext = Addresses;
在進入主類的方法中
for(int i=0; i<10; i++)
{
Addresses.Add(new Address(){Meter = "",Slave = i});
}
for (int i = 0; i < 10; i++)
{
Addresses[i].Meter = Convert.ToString(i);
}
在我的輸入方法中顯示我可以輕松填充和編輯此列表
public class Address
{
public int Slave { get; set; }
public string Meter { get; set; }
public Address()
{
}
}
這顯然是我需要的額外課程
有:
<DataGrid Name="dataGrid1" ItemsSource="{Binding}">
<DataGrid.Columns>
<DataGridTextColumn Header="Slave Address" Binding="{Binding Path=Slave}"/>
<DataGridTextColumn Header="Meter Readings" Binding="{Binding Path=Meter}"/>
</DataGrid.Columns>
</DataGrid>
當您無法以任何方式在對象中顯示事物時,WPF會為您帶來非常有用的東西。 您可以使用轉換器。 我確信此Converter系統將幫助您完善所需的方式。
創建一個采用數組的Converter,並返回類似串聯項的字符串之類的東西,或者可能是您想要的東西。 並將從顯示值轉換回對象。 雙方同步。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.