Con*_*des 2 c# wpf ribbon isenabled
我正在开发一个程序来管理具有本地UI和远程接口的minecraft服务器.我在功能区栏上有一个按钮,用于启用或禁用远程接口,以及用于输入端口的文本框.目前,我在启用网络时禁用文本框,但是,在我再次将其设置为true后,禁用不会重新启用文本框(设置断点会显示它仍为false).
private void NetToggleChecked(object sender, RoutedEventArgs e) {
portTextBox.IsEnabled = false;
if (ButtonPressedByUser) {
var result = MessageBox.Show("Are you sure you want to enable networking with the current settings?" +
" If not properly configured, it may be possible for an attacker to enter your server.",
"Simple Bukkit Wrapper", MessageBoxButton.YesNo, MessageBoxImage.Warning,
MessageBoxResult.No);
if (result == MessageBoxResult.No) {
ButtonPressedByUser = false;
NetworkToggle.IsChecked = false;
ButtonPressedByUser = true;
return;
}
}
Config.NetConf["enabled"] = "true";
int port;
if (!int.TryParse(Config.NetConf["port"], out port)) {
MessageBox.Show("Port could not be parsed (is it a number?)");
ButtonPressedByUser = false;
NetworkToggle.IsChecked = false;
ButtonPressedByUser = true;
return;
}
Net.Listener.StartListening(port);
}
private void NetworkToggleUnchecked(object sender, RoutedEventArgs e) {
portTextBox.IsEnabled = true;
if (ButtonPressedByUser) {
var result =
MessageBox.Show("Are you sure you wish to disable all networking to your server? It will " +
"be impossible to connect to it remotely and any existing connections will be closed.",
"", MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.No);
if (result == MessageBoxResult.No) {
ButtonPressedByUser = false;
NetworkToggle.IsChecked = true;
ButtonPressedByUser = true;
return;
}
}
Config.NetConf["enabled"] = "false";
Net.Listener.StopListening();
}
Run Code Online (Sandbox Code Playgroud)
感谢您解决为什么文本框无法再次启用的任何帮助.
旧问题,但我一直在寻找答案时遇到它,所以我想发布一个答案.如果没有关联的命令,ribbonTextbox控件中存在一个错误,导致isenabled始终为false.我找到的方法有两种方法:
1:基于ribbontextbox创建一个新控件并覆盖isenabledcore属性以始终返回true.如此处所示无法将RibbonTextBox isEnable设置为False
2:创建一个虚拟命令并将其与控件关联
public static readonly ICommand DummyCommand = new RoutedCommand("Dummy", typeof(Control));
public static void Dummy(Object sender, ExecutedRoutedEventArgs e)
{
// Do nothing its a dummy command
}
public static void CanDummy(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = true;
}
Run Code Online (Sandbox Code Playgroud)
如此链接中的评论所述http://blogs.msdn.com/b/wpf/archive/2010/10/21/wpf-ribbon-october-2010-update-details.aspx.正如我所说的原始海报可能没什么帮助,但我一直在寻找答案,所以它可以节省其他人几分钟的谷歌搜索时间.