小编Cur*_*tis的帖子

WPF ComboBox绑定未正确更新

在此输入图像描述

我的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)

c# data-binding wpf binding combobox

4
推荐指数
1
解决办法
1万
查看次数

当 /r/n 在文本中时,如何让 Notepad++ 显示单独的行?

我已经将一些 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)

newline notepad++ linefeed

4
推荐指数
2
解决办法
1万
查看次数

TFS 2013是否已经搁置(使用GIT时)?

我无法在使用TFS的Visual Studio 2013中找到任何使用搁置集的方法.该功能是否已被删除,或者在使用GIT存储库时是否不可用?

git version-control shelveset visual-studio-2013 tfs2013

3
推荐指数
1
解决办法
503
查看次数

调用 Dns.GetHostAddresses(Dns.GetHostName()) 时无法解决主机异常

因此,我正在使用 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 …

.net dns upnp ios xamarin

2
推荐指数
1
解决办法
6275
查看次数

Xamarin是否在没有Mac的Windows机器上支持iPad和iTouch开发?

我是WPF C#.net开发人员,很高兴听到Xamarin.所以我去了他们的网站,下载了他们的应用程序的免费版本,并想写一个ios(iPad)应用程序.但是,当我使用Xamarin IDE打开一个新项目时,它并没有给我任何选项和IOS项目.这都是机器人.

我去了他们的网站,正在观看他们关于如何开发IOS应用程序的教学视频,他们说你需要使用mac.视频是否已过时,或者您是否真的需要使用Mac才能使用Xamarin开发iPad应用?

如果有人一直使用Xamarin,请在这里管道,让我知道这是如何工作的以及使用Xamarin开发iPad应用程序的学习曲线.

我是否需要购买它的1800美元版本,或者你可以使用免费版本吗?

谢谢你的帮助,柯蒂斯

c# xamarin.ios ipad xamarin

1
推荐指数
1
解决办法
1031
查看次数

如何将WPF椭圆的高度绑定到自己的宽度?

我在Grid.Row和Grid.Column中绘制了一个椭圆.Row总是高于Column宽.

我想绘制一个填充网格列宽度的椭圆,以及它的高度使其成为一个完美的圆.

我还想在上面的椭圆的中心画一个数字.基本上以一个以数字为中心的圆圈结束.

我可以在我的Ellipse和包含数字的TextBlock上轻松设置Horizo​​ntalAlignment ="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的答案.只需将Horizo​​ntalAlignment设置为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)

c# wpf binding ellipse textblock

1
推荐指数
1
解决办法
5009
查看次数