我正在嘗試創建一個窗口,充當測試我正在處理的應用程序的開關板,並且遇到兩個問題。wpf動態窗口
第一個問題是試圖設置大小爲&需要動態添加到堆棧面板的按鈕邊距。在XAML中,屬性如下所示:
<StackPanel Name="_mainStackPanel" >
<Button Height="Auto" Width="Auto" Margin="10,10,10,5" >Do Something</Button>
</StackPanel>
第二個問題更棘手。我想開關板窗口有一個公開的屬性狀態欄,就像這樣:
<StatusBar BorderBrush="Black" BorderThickness="1" DockPanel.Dock="Left">
<TextBlock Name="_statusBar" Foreground="Black" TextWrapping="Wrap">blah</TextBlock>
</StatusBar>
public string Status {
get { return _statusBar.Text; }
set { _statusBar.Text = value; }
}
在我工作通過測試的情況下,我只希望每個按鈕來顯示它在狀態欄中的文本內容當它被點擊時。調用點擊得到一個NullReferenceException ...
我使用命令模式來告訴按鈕當它被點擊時該做什麼。下面是開關板窗口中的代碼,其中的命令都變成按鈕:
private void _addButtons() {
foreach (var cmd in _commands)
{
var b = new Button
{
Content = cmd.DisplayText,
// height = "Auto" double.NaN ?
// width = "Auto"
// margin = "10,10,10,5
};
var command = cmd;
b.Click += ((sender, args) => command.Execute());
_mainStackPanel.Children.Add(b);
}
}
這裏是我的「測試」的設置(我不主張什麼,只是發射了圖形用戶界面,看它是否工作) :
[TestFixture]
public class SwitchBoardTests
{
private SwitchBoardView _switchboard;
private Application _app;
[SetUp]
public void SetUp() {
var commands = new List<IDisplayableCommand> {
new StatusCommand("Hello...", _switchboard),
new StatusCommand("Good Bye...", _switchboard),
};
_switchboard = new SwitchBoardView(commands);
}
class StatusCommand : DisplayCommand
{
private readonly SwitchBoardView _view;
public StatusCommand(string message, SwitchBoardView view) : base(message) {
_view = view;
}
public override void Execute() { _view.Status = DisplayText; }
}
[Test]
public void Display() {
_app = new Application();
_app.Run(_switchboard);
//_switchboard.Show();
}
}
我剛學WPF,這樣可能會出來解決這兩個問題將是最歡迎的最佳做法!
乾杯,
Berryl