
我的ComboBox中有Binding的更新问题.我创建了一个简化的例子来说明这个问题.我将粘贴下面的所有相关代码.
所以在上图中,我有一个TextBlock(黑色),显示SelectedPerson的'SelectedPerson.FullName'属性.SelectedPerson的FirstName和LastName属性显示在FullName下面的2个TextBox中.ComboBox DisplayMemberPath绑定到'FullName',组合框包含Person对象列表.
"FullName"属性在TextBlock,ComboBox和ComboBox下拉列表中应该相同.
但是,它只能在TextBlock中正确更新.comboBox Dropdown仅在第一次打开时更新,之后不会更新.因此,如果我在文本框中编辑FirstName并单击下拉列表然后再编辑它并再次单击下拉列表,我们最终会为SelectedPerson显示3个不同的"FullName"值.
我在后面的代码中使用INotifyPropertyChanged来通知"SelectedPerson"的更改.这似乎可以很好地更新TextBlock,但由于某种原因,ComboBox没有使用新的"FullName"进行更新.
当我发送'SelectedPerson'通知时,我试图发送"FullName"通知,但它也没有使它工作.
任何人都能告诉我为什么在更改FirstName文本时ComboBox没有更新?
谢谢.
MainWindow.xaml:
<Window x:Class="ComboBoxBinding.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
DataContext="{Binding RelativeSource={RelativeSource Self}}">
<StackPanel Margin="50" Width="150">
<TextBlock Margin="0,0,0,10" Height="30" Padding="8" Background="Black" Foreground="White" Text="{Binding SelectedPerson.FullName}"/>
<TextBox Text="{Binding SelectedPerson.FirstName, UpdateSourceTrigger=PropertyChanged}"/>
<TextBox Text="{Binding SelectedPerson.LastName, UpdateSourceTrigger=PropertyChanged}"/>
<ComboBox Margin="0,16,0,0"
ItemsSource="{Binding People}"
DisplayMemberPath="FullName"
SelectedItem="{Binding SelectedPerson, UpdateSourceTrigger=PropertyChanged}">
</ComboBox>
</StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)
MainWindow.xaml.cs:
using System.Collections.Generic;
using System.ComponentModel;
namespace ComboBoxBinding
{
public partial class MainWindow : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{ …Run Code Online (Sandbox Code Playgroud) 我已经将一些 XML 粘贴到 Notepad++ 中。粘贴的文本包含 \r\n 应该出现换行符的任何地方。但是,Notepad++ 只是在一行中显示整个文件。就好像它忽略了\r\n
所以文本看起来像这样:
Some stuff on one line\r\n Some stuff that should be on another line\r\n
Run Code Online (Sandbox Code Playgroud)
代替:
Some stuff on one line
Some stuff that should be on another line
Run Code Online (Sandbox Code Playgroud) 我无法在使用TFS的Visual Studio 2013中找到任何使用搁置集的方法.该功能是否已被删除,或者在使用GIT存储库时是否不可用?
因此,我正在使用 Xamarin 和 .net 在 iOS 项目中实现 uPNP。我一直在努力获取本地设备(即运行程序的设备)的有效本地 IP 地址。
我尝试使用NetworkInterface.GetAllNetworkInterfaces(),但 Xamarin 的该方法的实现中有一个错误,并且它不起作用。
因此,我环顾四周,发现了一种简单的方法来实现这一目标。我尝试了以下方法:
IPAddress[] hostAddresses = Dns.GetHostAddresses(Dns.GetHostName());
Run Code Online (Sandbox Code Playgroud)
上面抛出了“无法解析主机...”异常(其中...是我的设备名称)。
所以它确实获取了我的设备名称,但随后无法解析它。
此代码在 Windows 下的 WPF 应用程序中运行良好。在带有 iPhone 或 iPad 模拟器的 MAC 上使用 Xamarin Studio 效果很好。
但是,当我尝试让 MAC 将应用程序启动到我的实际 iPad 设备上时,出现以下异常:
System.Net.Sockets.SocketException:无法解析 /Developer/MonoTouch/Source/mono/mcs/class/System/System 中 System.Net.Dns.Error_11001 (System.String hostName) [0x00000] 处的主机“Charrison”。 Net/Dns.cs:298 位于 /Developer/MonoTouch/Source 中的 System.Net.Dns.hostent_to_IPHostEntry (System.String originalHostName、System.String h_name、System.String[] h_aliases、System.String[] h_addrlist) [0x00082] /mono/mcs/class/System/System.Net/Dns.cs:326 位于 /Developer/MonoTouch/Source/mono/mcs/class/System 中的 System.Net.Dns.GetHostByName (System.String hostName) [0x0002a] /System.Net/Dns.cs:467 位于 /Developer/MonoTouch/Source/mono/mcs/class/System/System.Net/Dns.cs 中的 System.Net.Dns.GetHostEntry (System.String hostNameOrAddress) [0x00061] :406 在 System.Net.Dns.GetHostAddresses (System.String …
我是WPF C#.net开发人员,很高兴听到Xamarin.所以我去了他们的网站,下载了他们的应用程序的免费版本,并想写一个ios(iPad)应用程序.但是,当我使用Xamarin IDE打开一个新项目时,它并没有给我任何选项和IOS项目.这都是机器人.
我去了他们的网站,正在观看他们关于如何开发IOS应用程序的教学视频,他们说你需要使用mac.视频是否已过时,或者您是否真的需要使用Mac才能使用Xamarin开发iPad应用?
如果有人一直使用Xamarin,请在这里管道,让我知道这是如何工作的以及使用Xamarin开发iPad应用程序的学习曲线.
我是否需要购买它的1800美元版本,或者你可以使用免费版本吗?
谢谢你的帮助,柯蒂斯
我在Grid.Row和Grid.Column中绘制了一个椭圆.Row总是高于Column宽.
我想绘制一个填充网格列宽度的椭圆,以及它的高度使其成为一个完美的圆.
我还想在上面的椭圆的中心画一个数字.基本上以一个以数字为中心的圆圈结束.
我可以在我的Ellipse和包含数字的TextBlock上轻松设置HorizontalAlignment ="Stretch".这照顾了我的宽度.但是,即使Grid.Column宽度发生变化,如何使Ellipse和TextBlock的高度始终与其宽度匹配?
这里有一些XAML来说明这一点.在下面的XAML中,我希望硬编码的'63'基于Grid.Column宽度或椭圆的宽度范围:
<Ellipse Grid.Row="1" Grid.Column="0" HorizontalAlignment="Stretch" Height="63" Stroke="Black" StrokeThickness="3" VerticalAlignment="Top"/>
<TextBlock Grid.Row="1" Grid.Column="0" Width="63" Height="63" VerticalAlignment="Top" Text="1" TextAlignment="Center" FontSize="42" FontWeight="Bold"/>
Run Code Online (Sandbox Code Playgroud)
感谢你的帮助.我最终使用了Herdo的答案.只需将HorizontalAlignment设置为Stretch,然后将高度绑定到椭圆的实际宽度即可.我对椭圆和文本块做了同样的事情:
<Ellipse HorizontalAlignment="Stretch" Height="{Binding ActualWidth, RelativeSource={RelativeSource Self}}"/>
<TextBlock HorizontalAlignment="Stretch" Height="{Binding ActualWidth, RelativeSource={RelativeSource Self}}"/>
Run Code Online (Sandbox Code Playgroud)