我无法Dictionary<string, List<string>>使用正确的布局将我的 WPF 数据网格绑定到我的 WPF 数据网格。
这是我的数据对象:
public class Result
{
public Result(string type, string name, Dictionary<string, List<string>> partners)
{
Type = type;
Name = name;
Partners = partners;
}
public string Type { get; set; }
public string Name { get; set; }
public Dictionary<string, List<string>> Partners { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我填充了虚拟数据并作为我的视图模型的公共属性公开:
public class MainViewModel
{
public MainViewModel()
{
var partners = new Dictionary<string, List<string>>
{
{"Company", new List<string> {"company1", "company2"}},
{"Operator", new List<string> {"false", "true"}}, …Run Code Online (Sandbox Code Playgroud) 我有一个Map具有几个状态的功能父组件,其中之一是layers,其值最初是从配置中设置的。
然后我有一个子LayerControl组件,它将地图的图层状态作为其道具。LayerControl 组件进行一些更改并将它们传递回 Map onLayerChange,然后使用 Map调用层 ( setLayers)的 setState 方法。
据我了解,这应该会触发我的 LayerControl 组件的重新渲染,但事实并非如此。我做错了什么?
export default function Map(){
const [viewport, setViewport] = useState(mapConfig.viewport);
const [style, setStyle] = useState(mapConfig.mapStyle);
const [layers, setLayers] = useState(mapConfig.layers);
function updateLayers(layers){
setLayers(layers); //why won't LayerControl re-render?
}
return(
<MapGL
zoom={[viewport.zoom]}
containerStyle={{
height: "100%",
width: "100%"
}}
style={style}>
<LayerControl
onLayerChange={layers => updateLayers(layers)}
layers={layers}
/>
<ZoomControl/>
<ScaleControl/>
</MapGL>
);
}
Run Code Online (Sandbox Code Playgroud)