Ich habe kein Glück, das Problem der Datenbindung nicht funktioniert. Ich habe zwei Benutzersteuerelemente. Das Benutzersteuerelement, das die Obervablecollection verwendet, funktioniert einwandfrei. Das Benutzersteuerelement, das an ein Objekt gebunden ist, nicht. Wenn ich den Wert dem Text zuweise, erscheint der Wert. Während des Debuggens kann ich überprüfen, ob die Werte korrekt sind.
Diese Logik folgt Paul Sheriff und ein paar Beiträge von dieser Website. Meine Mitarbeiter programmieren nicht in C#, also können sie nicht helfen. Ich vermisse etwas, habe aber keine Ahnung, was es ist.Wint Wpf Databinding
Viewmodel-Klasse, die von INotifyPropertyChanged erbt:
ParameterSettings _ps;
public ParameterSettings DetailData
{
get { return _ps; }
set
{
_ps = value;
RaisePropertyChanged("DetailData");
}
}
public async Task GetParameters()
{
var pm = new ParameterManager();
DetailData = new ParameterSettings();
await pm.GetLoginCredentials(_ps);
}
Dies ist der Code der Benutzer die Kontrolle.
ViewModels.ParameterSettingsVm _viewModel;
public ParameterSettingsUc()
{
this.InitializeComponent();
_viewModel = (ParameterSettingsVm)Resources["viewModel"];
var bounds = Window.Current.Bounds;
this.CancelBtn.Width = bounds.Width * .5;
this.SaveBtn.Width = bounds.Width * .5;
}
private async void UserControl_Loaded(object sender, RoutedEventArgs e)
{
await _viewModel.GetParameters();
//UserNameBx.Text = _viewModel.DetailData.UserLogin; //textbox gets filled in.
}
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:SiteManager.Views"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:VM="using:SiteManager.ViewModels"
x:Class="SiteManager.Views.ParameterSettingsUc"
mc:Ignorable="d"
d:DesignHeight="300"
d:DesignWidth="400"
Loaded="UserControl_Loaded">
<UserControl.Resources>
<VM:ParameterSettingsVm x:Key="viewModel"></VM:ParameterSettingsVm>
</UserControl.Resources>
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="50"/>
</Grid.RowDefinitions>
<Grid Grid.Row="0" >
<TextBox Header="Login:" VerticalAlignment="Center" Margin="2,10,0,0" Grid.Row="0" x:Name="UserNameBx" Text="{Binding Path=DetailData.UserLogin, Mode=TwoWay, UpdateSourceTrigger=Default}" >
<TextBox.DataContext>
<VM:ParameterSettingsVm/>
</TextBox.DataContext>
</TextBox>
Sie scheinen zwei Instanzen von 'ParameterSettingsVm' zu haben - eine für das Ansichtsmodell Ihres Benutzersteuerelements und eine für den' DataContext' der 'TextBox'. Das könnte Verwirrung stiften. Implementieren 'ParameterSettings' auch' INotifyPropertyChange' und erhöhen die Benachrichtigung über die 'UserLogin'-Eigenschaft? Können Sie mitteilen, wie 'RaisePropertyChanged' implementiert wurde? –
Auch - wenn es eine WinRT-App ist, dann kann es nicht WPF sein. Es ist entweder WPF oder WinRT/XAML = Windows Store App. –