小编C4p*_*1nZ的帖子

UserControl动画按钮的背景

我想一个动画ButtonBackground鼠标是否过Button.

ButtonBackground必然,我在代码中创建的背后,一个自定义的依赖项属性我UserControl

... Background="{Binding BGColor, Elementname="QButton"}"
Run Code Online (Sandbox Code Playgroud)

现在,如果我尝试使用按钮的背景动画

<Trigger Property="IsMouseOver" Value="True">
    <Trigger.EnterActions>
        <BeginStoryboard>
            <Storyboard>
                <ColorAnimation To="LightBlue"
                                Duration="0:0:2"
                                Storyboard.TargetProperty="Background.Color"/>
            </Storyboard>
        </BeginStoryboard>
    </Trigger.EnterActions>
</Trigger>
Run Code Online (Sandbox Code Playgroud)

我得到一个例外,说:

无法为不可变属性(或类似属性)设置动画.

我该如何解决这个问题?

c# wpf animation user-controls dependency-properties

12
推荐指数
1
解决办法
218
查看次数

如何在UserControl中使用ContentPresenter

我想创建一个UserControl(在这种情况下是一个带有已定义Backgroundcolors的方形按钮),它可以托管它自己的内容.

用户控件:

<UserControl x:Class="SGDB.UI.Controls.ModernButton"
         xmlns:local="clr-namespace:SGDB.UI.Controls"
         xmlns:converter="clr-namespace:SGDB.UI.Converter"
         x:Name="_modernButton">
<Button>
    <Button.Resources>
        <converter:EnumToColorConverter x:Key="ColorConverter"/>
    </Button.Resources>
    <Button.Template>
        <ControlTemplate>
            <Border Width="{Binding Size, ElementName=_modernButton}" Height="{Binding Size, ElementName=_modernButton}" BorderBrush="Black" BorderThickness="0.8,0.8,3,3">
                <Grid Background="{Binding BackgroundColor, ElementName=_modernButton, Converter={StaticResource ColorConverter}}">
                    <ContentPresenter/>
                </Grid>
            </Border>
        </ControlTemplate>
    </Button.Template>
</Button>
Run Code Online (Sandbox Code Playgroud)

现在,正如您所期望的那样,如果我在MainView中使用此控件,那么在我定义一些内容之前就可以正常工作.

使用:

<control:ModernButton Size="200" BackgroundColor="Light">
    TEST
</control:ModernButton>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,"TEST"将覆盖UserControl的整个内容(整个按钮模板).我想这是因为UserControl中的Button被定义为"Content"本身,并且在定义新内容时会被覆盖.

所以最后一个问题是:有可能实现我正在寻找的东西吗?如果是的话:怎么样?我怎样才能将我在MainView中定义的内容"重定向"到我的Button模板中的自定义ContentPresenter而不是UserControls的ContentPresenter?

如果可能的话,我不想创建一个托管我的内容的新dp-propery,例如:

<controls:MordernButton Size="200" BackgroundColor="Light">
    <controls:ModernButton.Content>
        I don't want this, if possible
    </controls:ModernButton.Content>
</controls:ModernButton>
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml user-controls contentpresenter

11
推荐指数
3
解决办法
1万
查看次数

在Visual Studio 2015中调试XAML.Live Visual Tree和Live Properties在哪里

我下载了新的Visual Studio 2015 CTP6来测试新的XAML调试功能 - 但我找不到它们?我已经读过那些窗口应该在开始调试后立即打开但是它们没有出现 - 任何人都知道我做错了什么?

c# wpf xaml visual-studio visual-studio-2015

8
推荐指数
2
解决办法
3663
查看次数

WNetAddConnection2返回错误1200 - 本地名称有效

我正在尝试将共享(假设为\ server\folder)连接到我的本地设备X:

[DllImport("Mpr.dll", CharSet = CharSet.Unicode, SetLastError = true)]
        private static extern int WNetAddConnection2(
            [In] NetResource lpNetResource,
            string lpPassword,
            string lpUsername,
            int flags
        );

public static bool Connect(string remoteName, string localName, bool persistent) {
            if (!IsLocalPathValid(localName)) return false;
            var r = new NetResource
            {
                dwScope = ResourceScope.RESOURCE_GLOBALNET,
                dwType = ResourceType.RESOURCETYPE_ANY,
                dwDisplayType = ResourceDisplayType.RESOURCEDISPLAYTYPE_SHARE,
                dwUsage = ResourceUsage.RESOURCEUSAGE_CONNECTABLE,
                lpRemoteName = remoteName,
                lpLocalName = localName
            };
            return WNetAddConnection2(r, null, null, persistent ? 1 : 0) == 0;
        }

[StructLayout(LayoutKind.Sequential)]
    public class NetResource { …
Run Code Online (Sandbox Code Playgroud)

c# share network-programming wnet

6
推荐指数
1
解决办法
600
查看次数

DropDown选择中的ASP.Net MVC更新ViewModel已更改

起初我对网络开发非常新.我正在尝试开发一个由单个页面组成的Web应用程序(我从一个试图遵循mvc模式的空项目开始).

要填充我的视图,我将ViewModel通过我的HomeController传递到我的"Home"视图.

现在我想根据DropDown选择更改一些Label-Texts.

视图模型:

public IEnumerable<Models.Language> AvailableLanguages;
public Models.Language SelectedLanguage
Public IEnumerable<Models.Text> Content;
Run Code Online (Sandbox Code Playgroud)

语言:

public int ID;
public string LanguageText;
Run Code Online (Sandbox Code Playgroud)

文本:

public Language Language;
public string Description;
Run Code Online (Sandbox Code Playgroud)

HTML:@model ViewModels.MyViewModel

<div>
    @Html.DropDownFor(x => x.AvailableLanguages, 
    new SelectList(Model.AvailableLanguages, 
    "ID", 
    "LanguageText", 
    new {@onchange= ... })) 
</div>

<div>
    @{
        @:@Model.MyViewModel.Content
        .Where(o => o.Language.Equals(Model.SelectedLanguage)
        .First())
        .Description
     }
</div>
Run Code Online (Sandbox Code Playgroud)

我读到了一些关于这个"@onchange"属性(Ajax,JQuery)的东西 - 但说实话,如果有任何ASP/MVC/HTML解决方案可以实现我的目标,那么每次所选项目更新我的SelectedLanguage属性都会很棒下拉列表的变化.

另外:你可以推荐一个web开发教程(asp,html,ajax,jquery,js)吗?

感谢名单!

编辑

现在我尝试实现提供的代码,但似乎在更改所选项时没有任何反应......

脚本:

<div class="LanguageSelection">
        @{
            @Html.DropDownList("SelectedLanguage", new SelectList(Model.AvailableLanguages, "ID", "Description"))
            <script src="~/Scripts/jquery-1.10.2.min.js" type="text/javascript">
                var url = '@Url.Action("ChangeLanguage", "Home")';
                $('#SelectedLanguage').change() {
                    $.getJSON(url, { …
Run Code Online (Sandbox Code Playgroud)

html c# asp.net-mvc onchange viewmodel

5
推荐指数
1
解决办法
2万
查看次数

如何...显示数据库中的数据

我有一个应用程序,目前由两部分组成

  1. 使用EF从数据库接收数据的查看器
  2. 在运行时从数据库操作数据的服务.

幕后的逻辑包括一些项目,如存储库 - 数据访问是通过一个工作单元实现的.Viewer本身是一个带有底层ViewModel的WPF表单.

ViewModel包含一个ObservableCollection,它是我的Viewer的数据源.

现在的问题是 - 我怎么能每隔几分钟检索一次数据库数据?我知道以下两个问题:

  1. 这不是我的存储库"加载"的最新数据 - EF"智能"的东西,并从本地缓存中检索数据?如果是这样,我如何强制EF从数据库加载数据?
  2. 无法重新设置整个ObservableCollection或从另一个线程/后台工作者(使用invokation)添加/删除实体.我该怎么解决这个问题?

如果需要,我会添加一些代码,但目前我认为这根本不会有所帮助.

编辑:

public IEnumerable<Request> GetAllUnResolvedRequests() {
        return AccessContext.Requests.Where(o => !o.IsResolved);
    }
Run Code Online (Sandbox Code Playgroud)

这段代码将无法获取最新数据 - 我手动编辑了一些行(将IsResolved设置为true),但此方法仍会检索它.

EDIT2:

在数据库中手动编辑数据后的属性

数据库中的数据

EDIT3:

var requests = AccessContext.Requests.Where(o => o.Date >= fromDate && o.Date <= toDate).ToList();
        foreach (var request in requests) {
            AccessContext.Entry(request).Reload();
        }
        return requests;
Run Code Online (Sandbox Code Playgroud)

最后的问题: 上面的代码"解决"了问题 - 但在我看来它并不干净.还有另外一种方法吗?

c# collections wpf entity-framework lazy-loading

5
推荐指数
1
解决办法
211
查看次数

ASP.Net MVC 身份验证 - 基于角色隐藏视图中的元素

是否有可能将授权属性的结果移交给视图?

假设我想根据用户的成员资格在我的索引视图中隐藏 5 个链接。

[Authorize(Roles = "Admin")]
public ActionResult Index(){
    ....
}
Run Code Online (Sandbox Code Playgroud)

上面的代码将阻止所有不属于 Admin-Group 的用户访问 Index 页面。

@{
    if(User.IsInRole("Admin"){
        <a href="#">Some link to be hidden</a>
    }
}
Run Code Online (Sandbox Code Playgroud)

如果用户不是管理员角色的一部分,此代码将隐藏链接。这基本上是我想要的,但是使用这种方法,如果角色发生变化,我必须更改每个隐藏链接上的角色名称。

不是有类似两者结合的东西吗?(架构见下文)

[Authorize(Roles = "Admin")] //This will pass true to the View if the User is a member of the group "Admin"
public ActionResult Index(){
    ....
}

@{
    if(User.IsAuthenticated){ //This will read the "Token" and if it's true the if statement will get executed.
        <a href="#">Some link to be hidden</a>
    }
}
Run Code Online (Sandbox Code Playgroud)

所以 …

asp.net asp.net-mvc asp.net-mvc-4

5
推荐指数
1
解决办法
8972
查看次数

如何使"this"指的是触发事件的元素

我想让"this"引用实际触发事件的元素:

<div class="input-group">
    <span class="input-group-addon header-text" id="action-header-text">Action</span>
    <div class="dropdown">
        <button class="btn btn-default dropdown-toggle" type="button" id="action-dropdown" data-toggle="dropdown" aria-expanded="true" style="min-width:250px;">
            <span class=" caret">
            </span>
        </button>
        <ul id="action-menu" class="dropdown-menu" role="menu"></ul>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

填写Ajax请求:

function UpdateActionDropdown() {
    $.ajax({
        url: 'FrontEnd/Action',
        type: 'POST',
        dataType: 'json',
        data: {
            lid: document.getElementById('selected-language-id').value
        },
        success: function (data) {
            document.getElementById('action-dropdown').firstChild.data = data.UnSelectable[0].ActionTrailer.DescriptionText;
            $('#action-menu').html(null);
            for (var i = 0; i < data.UnSelectable.length; i++) {
                $('#action-menu').append("<li role='presentation' class='disabled'><a role='menuitem' tabindex='-1'>" + data.UnSelectable[i].ActionTrailer.DescriptionText + "</a></li>")
            }
            $('#action-menu').append("<li role='presentation' class='divider'></li>");
            for (var i = …
Run Code Online (Sandbox Code Playgroud)

html javascript ajax asp.net-mvc jquery

-1
推荐指数
1
解决办法
116
查看次数