小编Eli*_*ron的帖子

您如何访问数据绑定 ContentControl 的 DataTemplate 生成的内容?

假设我有以下内容:

<FrameworkElement.Resources>
    <DataTemplate DataType="{x:Type viewmodel:MainViewModel}">
        <view:MainBaseView />
    </DataTemplate>
</FrameworkElement.Resources>

<ContentControl x:Name="uxMaster" Grid.Row="0" Content="{Binding}" />
<view:AddRemoveBaseView x:Name="uxButtons" Grid.Row="1"
      DataContext="{Binding ElementName=uxMaster, Path=Content.uxGrid}" />
Run Code Online (Sandbox Code Playgroud)

现在假设Content正在绑定到 a 的新实例MainViewModel。通过 WPF 的魔力DataTemplates,它会创建一个UserControl MainBaseViewwhere 的实例ContentControl并将其DataContext设置为Binding

问题是,你到底如何访问这个生成的内容(即MainBaseView实例)?我想绑定uxButtons'DataContext到生成的网格内Content,但在检查中Content只包含了结合,而不是MainBaseView实例及其逻辑/视频树。

c# wpf xaml

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

.NET XmlSerializer 和多维数组

我正在实施一个程序,该程序充当某些现有软件的客户端。该协议是使用XML模式定义的,它包括多维数组。

.netXmlSerializer无法处理这些 -这是一个已知问题

有没有办法扩展XmlSerializer以便我可以对此进行处理,或者是否有完整的(免费或商业的)替代品XmlSerializer可以处理多维数组?

SharpSerializer 似乎没有创建模式定义的 XML,而是使用它自己的序列化格式。

我想我可以sgen.exe用来生成序列化程序代码,然后手动编辑它以添加必要的处理,但我想避免这种情况。

.net c# xml xsd xmlserializer

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

Formik + 是的,不显示错误

我有以下表格:

import React from 'react'
import PanelInputField from './form_components/panel_input_field'
import * as yup from 'yup'
import { withFormik, FormikErrors, FormikProps } from "formik";

const validationSchema = yup.object().shape({
  length: yup
    .number()
    .min(200, 'NOT BIG ENOUGH')
    .required()
})

class SpecificationsForm extends React.PureComponent {
  render() {
    const {
      values,
      handleInputChange,
      handleSelectChange,
      touched,
      errors
    } = this.props;

    console.log(errors)
    return (
      <div className="panel panel-default specifications-panel" id="js-turbosquid-product-specifications-panel">
        <div className="panel-heading">
          <a href="#" className="js-more-info" data-toggle="collapse" data-target="#specifications-panel-instructions" tabIndex="-1">
            Specifications
            <i className="fa fa-question-circle" />
          </a>
        </div>

        <div className="panel-body panel-collapse collapse …
Run Code Online (Sandbox Code Playgroud)

reactjs yup formik

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

在数据框中设置样式后执行操作

每当我在代码中设置样式后尝试执行任何操作时,都会看到以下错误:

AttributeError: 'Styler' 对象没有属性 'drop'

在这种情况下,我试图在应用样式后删除一列,在其他情况下,我尝试连接 2 个数据帧,尽管它引发了类似的错误。我对 Pandas/Python 编程很陌生。

现在我已经尝试在应用样式之前放弃,这是有效的。但我的要求是在之后执行此操作。同样,我试图在它不允许的样式之后连接。我已将其简化为一个非常简单的数据框

代码:

df = pd.DataFrame([["A", 1],["B", 2]], columns=["Letter", "Number"])
def highlight(s):
    return ['background-color: red']
df = df.style.apply(highlight)
df = df.drop('Number', axis=1)  
with pd.ExcelWriter('testcolor.xlsx') as writer: 
    df.to_excel(writer,sheet_name = 'test')
Run Code Online (Sandbox Code Playgroud)

错误:

AttributeError: 'Styler' 对象没有属性 'drop'

我希望该列Number被删除。

pandas

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

Sorted 为真时 SelectedValue 的问题(ComboBox)

设置ComboBox.Sorted为 时trueComboBox.SelectedValue返回与可见选择的值不同的值。

加载项目并显示:

using (ModelContext model = new ModelContext())
{
    cbWorker.ValueMember = "IdWorker";
    cbWorker.DisplayMember = "FullName";

    bindingWorker.DataSource = model.Workers.Select(x => new ItemWorker{
            IdWorker = x.Id,
            FullName = x.FullName
        })
        .ToList();

    cbWorker.DataSource = bindingWorker;
}

private void CbWorker_SelectedValueChanged(object sender, EventArgs e)
{
    object x = cbWorker.SelectedValue;
    if (x!= null) label.Text = x.ToString();
}
Run Code Online (Sandbox Code Playgroud)

如果ComboBox.Sorted = falseSelectedValue可以:

在此处输入图片说明

但如果ComboBox.Sorted = true,SelectedValue不行:

在此处输入图片说明

有可能修复它吗?类似的问题,例如,CheckedListBox

c# sorting combobox winforms

5
推荐指数
0
解决办法
486
查看次数

如何在 Visual Studio 2019 for c# 中定义默认名称字段建议

鉴于班级:

class BaseController
{
    BaseView _baseView;
    BaseModel _baseModel;
}
Run Code Online (Sandbox Code Playgroud)

在使用 Visual Studio 的建议命名时,它为我提供了名称base,而不是baseView. 我设法_通过选项、文本编辑器、c#、代码样式添加了前缀。但我看不到如何控制建议的字段名称建议。

我想知道,如果这可以被控制,因此建议_baseView_baseModel等。

c# ide intellisense coding-style visual-studio-2019

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

我可以使用CancellationToken == CancellationToken.None 来检查default(CancellationToken)

原因是,如果是CancellationToken.None,我需要添加一个超时(所以一个新CancellationTokenCancellationTokenSource),例如

if (cancellationToken == CancellationToken.None)
{
    var tokenSource = new CancellationTokenSource();
    tokenSource.CancelAfter((int)_timeout.TotalMilliseconds);

    cancellationToken = tokenSource.Token;
}
Run Code Online (Sandbox Code Playgroud)

另一个想法是创建一个组合令牌。

更新。这样的东西会起作用吗?有什么我应该注意的问题吗?GC 会做它需要做的事吗?

public async Task<int> InternalActionAsync(CancellationToken token)
{
    // do something with the token...
    return 1;
}

public Task<int> ExternalActionAsync(CancellationToken token = default(CancellationToken))
{
    var internalTokenSource = 
            new CancellationTokenSource((int)_timeout.TotalMilliseconds);
    var linkedTokenSource = 
            CancellationTokenSource.CreateLinkedTokenSource(token, 
                                                            internalTokenSource.Token);

    return InternalActionAsync(linkedTokenSource.Token);
}
Run Code Online (Sandbox Code Playgroud)

c#

4
推荐指数
2
解决办法
2416
查看次数

如何将 UserControl 中的嵌套控件完全暴露给外部?

假设我有一个非常简单的UserControl

<UserControl x:Class="Test.UserControls.MyControl">
    <DockPanel>
        <Label Content="lorem" />
        <Button Name="ButtonFromUserControl" />
    </DockPanel>
</UserControl>
Run Code Online (Sandbox Code Playgroud)

例如,Button如果我在另一个文件中添加 ,我想从外部访问 的所有属性UserControl。我正在想象这样的事情:

 <StackPanel>
     <usercontrols:MyControl Button.Dock="{Binding ButtonDockPosition}"/>
 </StackPanel>
Run Code Online (Sandbox Code Playgroud)

我知道我可以为每个属性创建依赖属性以使它们可访问,但我还不知道哪些属性稍后可能会或可能不会使用,并且不想为每个嵌套控件的属性添加 DP。

我不确定这是否是正确的方法,如果还有其他方法或模式我也会感兴趣。

编辑:

我还尝试将其Button本身设为 DP,但这不允许我访问其属性:

public static readonly DependencyProperty NestedButtonProperty =
    DependencyProperty.RegisterAttached("NestedButton", typeof (Button), typeof (MyControl),
        new FrameworkPropertyMetadata());
     
     
 public Button NestedButton => ButtonFromUserControl;
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml user-controls dependency-properties

4
推荐指数
1
解决办法
767
查看次数

计算结构校验和时跳过/避免对齐填充字节

在计算C结构的校验和时,是否有通用的方法跳过/避免对齐填充字节?

我想通过对字节求和来计算结构的校验和。问题是,该结构具有对齐填充字节,它们可以获取随机(未指定)值,并使具有相同数据的两个结构获得不同的校验和值。

注意:我主要关注的是可维护性(无需更新代码即可添加/删除/修改字段)和可重用性,而不是可移植性(该平台非常具体且不太可能更改)。

目前,我找到了一些解决方案,但是它们都有缺点:

  1. 打包结构(例如#pragma pack (1))。 缺点:我宁愿避免打包以获得更好的性能。
  2. 逐字段计算校验和。缺点:修改结构时需要更新代码,并且需要更多代码(取决于字段数)。
  3. 在设置值之前,将所有结构字节设置为零。 缺点:我不能完全保证所有结构最初都为零。
  4. 安排结构字段以避免填充,并可能添加虚拟字段以填充填充。 缺点:不是通用的,修改结构时需要仔细重新排列结构。

有没有更好的通用方法?

计算校验和示例:

unsigned int calcCheckSum(MyStruct* myStruct)
{
    unsigned int checkSum = 0; 
    unsigned char* bytes = (unsigned char*)myStruct;
    unsigned int byteCount = sizeof(MyStruct);
    for(int i = 0; i < byteCount; i++)
    {
        checkSum += bytes[i];
    }
    return checkSum;
}
Run Code Online (Sandbox Code Playgroud)

c struct alignment

4
推荐指数
2
解决办法
119
查看次数

为什么 GetMember(string) 返回一个 MemberInfo 数组?

我正在使用反射并遇到错误:

System.Reflection.TargetException:对象与目标类型不匹配

因为我认为那只Type.GetMember(string)会返回一个MemberInfo,但它没有

我很好奇为什么Type.GetMember(string)返回的原因MemberInfo[]。其他反射方法喜欢Type.GetProperty()Type.GetMethod()返回它们各自的PropetyInfoMethodInfo对象。

当其他反射方法没有Type.GetMember()返回数组的目的是什么MemberInfo[]

.net c# reflection

4
推荐指数
1
解决办法
287
查看次数