试图使我的应用程序适用于iPhone 5和iPhone 4/4s.我尝试了"AutoLayout",但似乎不适用于我的应用程序也读取它在iOS 5中不受支持.AutoLayout特别在具有UIScrollview和UIPicker的视图控制器上失败,该UIPicker在代码中重新调整大小.有两个故事板一个4英寸和一个3.5英寸似乎是要走的路.
两个Storyboard aproch似乎是我的解决方案.所以这给我留下了两个问题;
代码应该在哪里检测,如果它是4/4s/5去?我假设在didFinishLaunchingWithOptions方法的appDelegate.m中
如何更改"主要故事板"?
我需要以编程方式创建一个DataGrid,并需要向其添加双击行事件.这是如何在C#中完成的?我找到了这个;
myRow.MouseDoubleClick += new RoutedEventHandler(Row_DoubleClick);
Run Code Online (Sandbox Code Playgroud)
虽然这对我不起作用,因为我绑定DataGrid.ItemsSource到集合而不是手动添加行.
这有点让我疯狂.添加DropShadowEffect到按钮.在IDE中它看起来像这样:

第二个按钮仅供参考DropShadowEffect.你可以看到下一个没有区别.然后我构建项目,当它运行时它看起来像这样:

是什么导致了这种变化?这是两个按钮的XAML:
<Button Name="clearButton" Content="Clear" Click="clearButton_Click" Margin="5,0,5,0" MaxWidth="80" MinHeight="40"
TextOptions.TextFormattingMode="Display">
<Button.Effect>
<DropShadowEffect BlurRadius="5" ShadowDepth="3" />
</Button.Effect>
</Button>
<Button Content="Clear" Margin="5,5,5,0" MaxWidth="80" MinHeight="40" TextOptions.TextFormattingMode="Display" />
Run Code Online (Sandbox Code Playgroud)
编辑:采取@gretro确实让它看起来更好,但它仍然是不对的:

然而在IDE中再次看起来很好:

我需要根据datagrid中的参数和值隐藏datagrid中的行.我想要做这样的事情;
foreach (System.Data.DataRowView dr in myDataGrid.ItemsSource)
{
//Logic to determine if Row should be hidden
if (hideRow == "Yes")
{
//Hide row code
}
}
Run Code Online (Sandbox Code Playgroud)
我只是无法想象如何实际隐藏行.请注意我不想从数据网格或项目源中删除行.
我必须在 .NET 6 应用程序中解压缩一些 gzip 文本,但是,对于一个 20,627 个字符长的字符串,它只解压缩大约 1/3。我正在使用的代码适用于 .NET 5 或 .NETCore 3.1 中的该字符串以及较小的压缩字符串。
public static string Decompress(this string compressedText)
{
var gZipBuffer = Convert.FromBase64String(compressedText);
using var memoryStream = new MemoryStream();
int dataLength = BitConverter.ToInt32(gZipBuffer, 0);
memoryStream.Write(gZipBuffer, 4, gZipBuffer.Length - 4);
var buffer = new byte[dataLength];
memoryStream.Position = 0;
using (var gZipStream = new GZipStream(memoryStream, CompressionMode.Decompress))
{
gZipStream.Read(buffer, 0, buffer.Length);
}
return Encoding.UTF8.GetString(buffer);
}
Run Code Online (Sandbox Code Playgroud)
结果看起来像这样:
令人惊叹的文本之星...... ...文本在 33,619 之前都很好,之后都是 NULLNULLNULLNULL
33,618 个字符之后的文件其余部分只是空值。
我不知道为什么会发生这种情况。
编辑:当我发现问题不是 Blazor 而实际上是 .NET 6 时,我更新了此内容。我采用了一个在 …
绑定复选框并在该复选框更改时触发事件的正确方法是什么?我尝试了几种不同的方法,但都没有完全按照我的希望工作。请注意,该复选框位于组件中。
<input type="checkbox" checked="@IsChecked" @onchange="CheckboxChanged">
@code{
[Parameter]
public bool IsChecked { get; set; } = true;
private void CheckboxChanged()
{
Console.WriteLine($"Checkbox changed {IsChecked}");
}
}
Run Code Online (Sandbox Code Playgroud)
当页面加载时,它会读取赋予 的值IsChecked,并且当选中 CheckBox 时,会触发该方法。但是, 的值IsChecked并未更新。然后,如果 的绑定值IsChecked在组件外部更改,则该方法不会触发,但 的值IsChecked会更改(应注意 UI 已正确更新)。
我想我需要一个像这样的实际绑定:
<input type="checkbox" @bind="IsChecked" @onchange="CheckboxChanged" >
Run Code Online (Sandbox Code Playgroud)
但是,这会产生onchange使用两个或多个
<input type="checkbox" @bind="IsChecked" @onclick="CheckboxChanged" >
Run Code Online (Sandbox Code Playgroud)
当用户单击该复选框时,它确实会触发该方法,但是IsChecked处于旧值(我假设单击发生在绑定之前)。然后,如果 的值IsChecked在组件外部发生更改,该方法将再次不会触发。
正确的方法是什么?
我有一个DataGrid绑定到集合,我想分组.这是代码
采集:
private string _ID;
private string _Descript;
private decimal _Amount;
public string ID
{
get { return _ID; }
set { _ID = value; NotifyPropertyChanged("ID"); }
}
public decimal Amount
{
get { return _Amount; }
set { _Amount = value; NotifyPropertyChanged("Amount"); }
}
public string Descript
{
get { return _Descript; }
set { _Descript = value; NotifyPropertyChanged("Descript"); }
}
Run Code Online (Sandbox Code Playgroud)
C#;
ListCollectionView groupcollection = new ListCollectionView(myCollection);
groupcollection.GroupDescriptions.Add(new PropertyGroupDescription("ID"));
myDataGrid.ItemsSource = groupcollection;
Run Code Online (Sandbox Code Playgroud)
XAML:
<DataGrid Name="myDataGrid">
<DataGrid.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate> …Run Code Online (Sandbox Code Playgroud) 我需要将 JsonElement 转换为字符串,但没有任何回车符、制表符或空格。一个简单的 ToString() 可以工作,但将它们留在:
data.ToString()
Run Code Online (Sandbox Code Playgroud)
结果:
"{\r\n "字段1": "值1",\r\n "字段2": "值2"\r\n }"
寻找:
"{"字段1":"值1","字段2":"值2"}"
当然,我可以执行一个简单的查找和替换字符串命令。但是,有些字段将包含回车符、制表符或空格,我不想更改它们。
编辑:无法删除此问题,请有人删除此问题,因为它已经得到答复。
我正在尝试将字符串传递给新窗口,当它打开并且无法正常工作时.这是Window 1中的代码;
窗口1
private void myButton_Click(object sender, RoutedEventArgs e)
{
var newMyWindow2 = new myWindow2();
newMyWindow2.Show();
newMyWindow2.myString = "The great String Value";
}
Run Code Online (Sandbox Code Playgroud)
在Windows 2中,这是我对字符串的声明;
Windows 2
public partial class myWindow2 : Window
{
public string myString { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,字符串出现NULL.为什么是这样?
我正在尝试向现有节点添加一个新节点JSON JObject,但是当我添加它时,它的格式不正确。它在整个节点周围添加引号,并将 \ 放在适当的位置。
背景:我正在加载一个JSON文件,执行一些逻辑,然后重新添加一个节点。我想我可以这样做:
mainJson.Add("NewNode", JsonConvert.SerializeObject(MyObject));
File.WriteAllText("myfile.json", mainJson.ToString());
Run Code Online (Sandbox Code Playgroud)
问题是结果如下:
{
"JSONFile": [
{
"More": "Nodes",
"InThe": "File"
}
],
"Customers": "{\"FirstName\":\"Mike\",\"LastName\":\"Smith\"},{\"FirstName\":\"Jane\",\"LastName\":\"Doe\"}",
}
Run Code Online (Sandbox Code Playgroud)
如果我这样做,我知道我的 JsonConvert.SerializeObject(MyObject) 正在工作:
string json = JsonConvert.SerializeObject(MyObject);
File.WriteAllText("myfile2.json" json);
Run Code Online (Sandbox Code Playgroud)
结果是这样的:
[
{
"FirstName": "Mike",
"LastName": "Smith"
},
{
"FirstName": "Jane",
"LastName": "Doe"
}
]
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
编辑: 以下@Swagata Prateek 评论;
mainJson.Add("Customers",JObject.FromObject(MyObject));
Run Code Online (Sandbox Code Playgroud)
Newtonsoft.Json.dll 中发生类型为“System.ArgumentException”的未处理异常
附加信息:对象序列化为数组。预期的 JObject 实例。
我应该注意到 MyObject 是实际的,ObservableCollection如果这有所不同
c# ×9
wpf ×5
datagrid ×3
json ×2
.net-6.0 ×1
blazor ×1
dropshadow ×1
json.net ×1
jsonelement ×1
storyboard ×1
uistoryboard ×1
wpfdatagrid ×1
xaml ×1
xcode ×1
xcode4.5 ×1