這是針對Windows平臺的開發確實是最簡單的,如果你做的事情,在「 Windows「的方式。這涉及到利用XAML演示框架中內置的真棒功能,如綁定和轉換器!
我將忽略數據來自數據庫,因爲它可能會通過網絡或以編程方式創建並且應該沒有關係,底線是它存儲在內存中的某處。
假設你有一個模型類爲您的數據:
class Data
{
public int intField { get; set; }
public string otherField { get; set; }
}
,並在列表視圖,數據對象的集合你的頁面背後的代碼:
private ObservableCollection<Data> ListViewData = new ObservableCollection<Data>();
我們就可以綁定您的ListView數據到XAML頁面中的此集合,因爲我假設您已完成:
<ListView ItemsSource="{Binding ListViewData}">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical">
<TextBlock x:Name="tbIntField" Text="{Binding intField, Mode=OneWay}"/>
<TextBlock x:Name="tbOtherField" Text="{Binding otherField, Mode=OneWay}"/>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
正如你所觀察到的,在這一點上,intField TextBlock
的內容將是intField
的數值,這不是你想要的。因此,我們將使用轉換器基於intField的值來格式化TextBlock
內容。
class intFieldConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
var intField = (int)value;
switch (intField)
{
case 0:
return "Foo";
case 1:
return "Bar";
default:
return default(string);
}
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
這一切確實是需要輸入int值,並返回要顯示基於字符串:
首先,在項目中創建一個新的類,我這實現了IValueConverter
接口稱之爲intFieldConverter值。我沒有實現將其轉換回來的方法,但這只是相同的,但倒退了;如果你需要雙向綁定,你可以做到這一點。
我們現在需要告訴你的XAML這個轉換器。您的轉換命名空間添加到您的XAML頁面,如果你需要它:
然後,我們需要在轉換器中的網頁標籤內的命名空間指定轉換資源:
<Page.Resources>
<converters:intFieldConverter x:Key="customIntToStringConverter"/>
</Page.Resources>
現在,我們可以用它我們TextBlock
結合轉換的值並顯示在視圖中正確的字符串:
<TextBox x:Name="tbIntField" Text="{Binding intField, Mode=OneWay, Converter={StaticResource customIntToStringConverter}}"/>
如果你的代碼隱藏有填充了一些觀察集合數據,現在您應該看到,listview中的每一行現在都將基於數據中的intField的值顯示「Foo」或「Bar」。
希望這有助於
注:
因爲我沒有一臺機器,此刻跟我來測試它在我沒有任何運行這段代碼來測試它的。我可以檢查我什麼時候回家,仔細檢查一下,如果您之前無法使用它,
添加示例代碼,同時提及你已經嘗試過的所有東西。 –
我試圖解釋的是我無法使用TextBox控件,因爲它太慢了。所以我想在運行時以編程方式更改TextBlock控件的Text值,其中TextBlock具有來自其itemsource的其他綁定值。我沒有示例代碼,因爲我不能這樣做。我試圖編寫自定義的TextBlock控件來做到這一點,但我無法做到這一點。在我看來,我不能從TextBlock類繼承自己的控件。 –
哪個字段是你綁定到textBlock的(「我把這個字段綁定到xaml網格中的TextBlock控件,所以在listview中,我看到了0和1行。我的目標是看到」sometext1「而不是0,」sometext2「而不是1在ListView中不更改ItemSource。「) –