Я хочу передать два изображения в пользовательский controlcontract, который должен иметь два свойства, которые нужно установить, один для источника каждого изображения.WPF Usercontrol с настраиваемыми свойствами
Но я столкнулся с проблемой с datacontext, который не распознан правильно. Это также может быть проблемой, что в первый раз я использую свойства зависимостей. Во всяком случае, я надеюсь, что вы можете понять мои мысли и помочь мне здесь, вот исходный код:
MainViewModel:
public class MainWindowViewModel : INotifyPropertyChanged
{
private string _spielerL1;
private string _spielerL2;
public MainWindowViewModel()
{
SpielerL1 = System.IO.Directory.GetCurrentDirectory() + @"\Images\queen_of_clubs.png";
SpielerL2 = System.IO.Directory.GetCurrentDirectory() + @"\Images\queen_of_diamonds.png";
[...]
}
public string SpielerL1
{
get { return _spielerL1; }
private set
{
_spielerL1 = value;
OnPropertyChanged("SpielerL1");
}
}
public string SpielerL2
{
get { return _spielerL2; }
private set
{
_spielerL2 = value;
OnPropertyChanged("SpielerL2");
}
}
}
На мой взгляд MainWindow я только инстанцирования ViewModel и с помощью элемента управления с SourceLeft = "{Binding} SpielerL1" и sourceRight = "{Binding} SpielerL2" ...
Мой код управления позади выглядит следующим образом (удален sourceright, чтобы сделать его короче):
public partial class HandControl
{
public HandControl()
{
InitializeComponent();
DataContext = this;
}
public string SourceLeft
{
get
{
return (string) GetValue(SourceLeftProperty);
}
set
{
SetValue(SourceLeftProperty, value);
}
}
public static readonly DependencyProperty SourceLeftProperty = DependencyProperty.Register("SourceLeft", typeof(string), typeof(HandControl), new PropertyMetadata(""));
}
И, наконец, мой UserControl XAML, который разве признание DataContext или по крайней мере не показывать мои изображения:
<UserControl x:Class="FoolMe.Gui.Controls.HandControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="3*" />
</Grid.ColumnDefinitions>
<Image Grid.Column="1"
Source="{Binding SourceLeft}" />
<Image Grid.Row="0"
Grid.Column="0"
Grid.ColumnSpan="2"
Source="{Binding SourceRight}" />
</Grid>
</UserControl>
Так как я нету сделал много с WPF и UserControls все же, я не имею ни малейшего понятия, что случилось. Без usercontrol он отлично работает, но аутсорсинг таким образом, мое окно сохраняет «белый».
У кого-то появилась идея, что пошло не так?
Unrelated: используйте [Path.Combine] (http://msdn.microsoft.com/en-us/library/system.io.path.combine (V = против. 110) .aspx) для объединения частей пути. – Athari
Спасибо, всегда открыты для предложений :) – Jannik