作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
似乎每次我读到一篇关于“如何进行WPF数据绑定(bind)”的文章时,它都是用一些不同的变体来完成的,有时使用DataContext,有时不使用,有时使用Itemssource或同时使用Itemssource和DataContext,还有ObjectDataProvider,您可以在 XAML 或代码隐藏中使用其中任何一个,或者没有代码隐藏并直接从 XAML 绑定(bind)到您的 ViewModel。
XAML 本身似乎有数十种不同的语法可供使用,例如:
<ListBox ItemsSource="{Binding Source={StaticResource Customers}}">
和
<ListBox DataContext="{StaticResource Customers}" ItemsSource="{Binding}">
例如,这两个代码示例执行相同的操作:
<强>1。使用没有代码隐藏的 ObjectDataProvider:
<Window x:Class="TestDataTemplate124.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:TestDataTemplate124"
Title="Window1" Height="300" Width="300">
<Window.Resources>
<ObjectDataProvider x:Key="Customers"
ObjectType="{x:Type local:Customer}"
MethodName="GetAllCustomers"/>
</Window.Resources>
<StackPanel>
<ListBox DataContext="{StaticResource Customers}" ItemsSource="{Binding}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding FirstName}"/>
<TextBlock Text=" "/>
<TextBlock Text="{Binding LastName}"/>
<TextBlock Text=" ("/>
<TextBlock Text="{Binding Age}"/>
<TextBlock Text=")"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
</Window>
<强>2。没有 DataContext 的示例:
<Window x:Class="TestDataTemplate123.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:TestDataTemplate123"
Title="Window1" Height="300" Width="300">
<StackPanel>
<ListBox x:Name="ListBox1">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding FirstName}"/>
<TextBlock Text=" "/>
<TextBlock Text="{Binding LastName}"/>
<TextBlock Text=" ("/>
<TextBlock Text="{Binding Age}"/>
<TextBlock Text=")"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
</Window>
using System.Collections.ObjectModel;
using System.Windows;
namespace TestDataTemplate123
{
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
ListBox1.ItemsSource = Customer.GetAllCustomers();
}
}
}
有谁知道解释 WPF 数据绑定(bind)的来源,而不是仅仅说“这是如何进行数据绑定(bind)”,然后解释一种特定的方式,而是尝试解释进行数据绑定(bind)的各种方法并可能显示例如,有什么优点和缺点是否有 DataContext、是否绑定(bind)在 XAML 或代码隐藏等中?
最佳答案
查看this备忘单
关于wpf - 有人知道 WPF 数据绑定(bind)示例的详尽集合吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/793158/
我有一个实用函数来在引用中存储不断变化的值: export function useRefOf(value: T) { const ref = useRef(value); useEffect
我是一名优秀的程序员,十分优秀!