我想將兩個圖像外包給一個自定義用戶控件,該用戶控件應該設置兩個屬性,一個用於每個圖像的來源。帶自定義屬性的WPF用戶控件
但是我遇到了無法正確識別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");
}
}
}
在我的主窗口視圖我只實例化視圖模型,使用控制與SourceLeft = 「{結合SpielerL1}」 和SourceRight = 「{結合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(""));
}
最後我的用戶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和用戶控件的是,我不知道,什麼是錯。沒有用戶控制它工作正常,但像這樣外包,我的窗口保持「白色」。
任何人有一個想法,什麼地方出了錯?
無關:使用[Path.Combine(http://msdn.microsoft.com/en-us/library/system.io.path.combine(V = VS。 110)的.aspx)結合路徑的部件。 – Athari
還是要謝謝你,總是開放的建議:) – Jannik