如何通过按钮的特定事件调用ViewModel上的命令,例如MouseDoubleClick?
我试图将数据库中的数据添加到acombobox.
try
{
SqlCeCommand com = new SqlCeCommand("select * from Category_Master", con);
SqlCeDataReader dr = com.ExecuteReader();
while(dr.Read()){
string name = dr.GetString(1);
cmbProductCategory.Items.Add(name);
}
}
catch(Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message, System.Windows.Forms.Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
Run Code Online (Sandbox Code Playgroud)
我得到以下异常:
无法将"System.Int32"类型的对象强制转换为"System.String"类型
我在这里错过了什么?
基本上我绑定了数据网格,使其类似于主题的时间表 - 每行代表一个学期的学科,并且该学期内的每个单元代表一个主题.
我现在正在尝试添加拖放功能,以便您可以将其他主题拖动到网格上,这将更新基础数据结构.
我可以使用一些可视树方法来查找用户正在拖动新主题的DataGridCell,但我不知道如何访问单元格绑定到它的值(主题)以替换空白/占位符值与新主题.有没有办法访问基础值或者我应该重构我创建此程序的整个方法?

我的新项目是我第一次看WPF MVVM和WCF,我喜欢它,但似乎我创建了很多文件,总是在相同的基本设置和结构中.
我想知道是否有人有办法将某种文件夹/项目结构定义为输入并自动创建各种POCO,视图,模型,服务类和接口,或许可以使用某种一致的文件名前缀.
然后开发人员可以进入并切割代码以获取他们的数据.
我看到了这个,这是一个正确的想法:
http://www.codeproject.com/Articles/16515/Creating-a-Custom-Tool-to-Generate-Multiple-Files
一位同事还建议批量文件可能值得调查.对所有想法持开放态度,感谢您的帮助.
更新//
这将在项目创建后进行.因此文件夹和项目已经到位,但您希望为端到端服务调用和演示添加必要的文件.
在MVVM场景中,我想基于超链接点击或图像点击显示/隐藏用户控件.如何在XAML中实现这一目标?
我已经搜索了一些教程,甚至看了多元化的PRISM简介.但是,大多数示例都基于使用统一容器和一些缺少有关如何使用Mef容器实现此功能的信息.我的简单helloworld模块基于Web教程.我的代码是相同的,除了我只停留在HelloModule并使用Mef,而不是Unity作为教程显示:
我的主要问题是如何使用我的视图模型初始化我的视图.我通过实验找到的唯一工作方式是在View构造函数中初始化视图模型:
HelloView.xaml.cs
namespace Hello.View
{
[Export]
public partial class HelloView : UserControl, IHelloView
{
public HelloView()
{
InitializeComponent();
Model = new HelloViewModel(this);
}
public IHelloViewModel Model
{
//get { return DataContext as IHelloViewModel; }
get { return (IHelloViewModel)DataContext; }
set { DataContext = value; }
}
}
}
Run Code Online (Sandbox Code Playgroud)
和标准模块初始化代码:
[ModuleExport(typeof(HelloModule), InitializationMode=InitializationMode.WhenAvailable)]
public class HelloModule : IModule
{
IRegionManager _regionManager;
[ImportingConstructor]
public HelloModule(IRegionManager regionManager)
{
_regionManager = regionManager;
}
public void Initialize()
{
_regionManager.Regions[RegionNames.ContentRegion].Add(ServiceLocator.Current.GetInstance<HelloView>());
}
}
Run Code Online (Sandbox Code Playgroud)
但是,有人可以告诉正确的方法如何做到这一点,我必须在模块初始化部分完成.
我想将静态nuxt.js应用程序(使用构建nuxt generate)部署到Web服务器的子目录中。dist默认情况下,nuxt将生成的文件放在目录中:
如果我在文件夹的父目录上启动Web服务器dist并使用以下命令打开页面:
http://localhost:34360/dist/
该站点(未成功)尝试从域根目录加载脚本文件:
我尝试publicPath在nuxt配置中设置属性:
build: {
publicPath: '/dist/'
}
Run Code Online (Sandbox Code Playgroud)
该应用程序编译为:
现在,nuxt将脚本文件下移一级(/ dist / dist),然后再次在根目录下进行搜索(/ dist),因此仍然找不到文件
无论我放置在服务器上的哪个目录中,如何生成该站点,以便加载脚本和资产并使其自包含?
该问题已在GitHub上讨论,但建议的提示(使用publicPath)不起作用,如上所示。
旁注:我不想指定publicPath绝对值(即http://localhost:8080/dist),它可以工作,但会带来新的问题。
我想从 Azure DevOps 管道执行以下操作:
staging)staging插槽productionproduction,现在的staging插槽到目前为止我所拥有的是:
staging与生产交换插槽production,现在的staging插槽YAML:
- task: AzureRmWebAppDeployment@4
inputs:
ConnectionType: 'AzureRM'
azureSubscription: 'BizSpark(...)'
appType: 'webApp'
WebAppName: 'foo'
deployToSlotOrASE: true
ResourceGroupName: 'Default-WestEurope'
SlotName: 'staging'
packageForLinux: '$(Build.ArtifactStagingDirectory)/**/*.zip'
- task: AzureAppServiceManage@0
inputs:
azureSubscription: 'BizSpark(..)'
Action: 'Swap Slots'
WebAppName: 'foo'
ResourceGroupName: 'Default-WestEurope'
SourceSlot: 'staging'
- task: AzureAppServiceManage@0
inputs:
azureSubscription: 'BizSpark(..)'
Action: 'Delete Slot'
WebAppName: 'foo'
ResourceGroupName: 'Default-WestEurope'
Slot: 'staging' …Run Code Online (Sandbox Code Playgroud) 我的问题很简单,但所有的选项都让我感到困惑......
在我的 MEF/Prism 应用程序中,我想将特定行为附加到一个特定区域。doumentation 说,你可以这样做:
IRegion region = regionManager.Region["Region1"];
region.Behaviors.Add("MyBehavior", new MyRegion());
Run Code Online (Sandbox Code Playgroud)
但是我应该把它放在哪里?有没有地方,这应该用引导程序方法完成?目前,我在 shell 的 Loaded-event 中添加了这样的行为:
/// <summary>
/// Interaction logic for Shell.xaml
/// </summary>
[Export(typeof(Shell))]
public partial class Shell
{
[ImportingConstructor]
public Shell(IRegionManager regionManager, ElementViewInjectionBehavior elementViewInjectionBehavior)
{
InitializeComponent();
Loaded += (sender, args) =>
{
IRegion region = regionManager.Regions[RegionNames.ElementViewRegion];
region.Behaviors.Add("ElementViewInjection", elementViewInjectionBehavior);
};
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个很好的解决方案。我宁愿在引导程序中执行此操作,以便在与其他区域行为注册 ( ConfigureDefaultRegionBehaviors())相同的位置执行此操作。
因此,问题是:将行为添加到单个区域的最佳位置在哪里?
我想TextBox从代码隐藏(不是代码TextBox隐藏,但是一些父控件)设置WPF的焦点,并在收到焦点时TextBox从TextBoxs代码隐藏中选择所有文本.
我这样关注TextBox:
var scope = FocusManager.GetFocusScope(txt);
FocusManager.SetFocusedElement(scope, txt);
Run Code Online (Sandbox Code Playgroud)
TextBox在TextBoxs codebehind 中听这样的事件:
AddHandler(GotFocusEvent, new RoutedEventHandler(SelectAllText), true);
Run Code Online (Sandbox Code Playgroud)
并尝试选择如下文本:
private static void SelectAllText(object sender, RoutedEventArgs e)
{
var textBox = e.OriginalSource as TextBox;
if (textBox != null)
textBox.SelectAll();
}
Run Code Online (Sandbox Code Playgroud)
但是文本没有被选中.我怎样才能修改它以便按照我的意愿工作?